在 C++ 中将 Double 转换为字符串的问题
Posted
技术标签:
【中文标题】在 C++ 中将 Double 转换为字符串的问题【英文标题】:Issue with Converting Double to String in C++ 【发布时间】:2016-03-03 00:34:20 【问题描述】:所以我知道在打印精度为n
的双精度值时应该使用setprecision(int n)
。但是,我在一个与此代码类似的项目上遇到了问题:
#include <iostream>
#include <iomanip>
using namespace std;
int main()
double var = 1.0000001;
cout << setprecision(10) << var << endl;
string str = to_string(var);
cout << str << endl;
return 0;
这是输出:
1.0000001
1.000000
在我正在处理的项目中,我需要将双精度值保存为字符串,并且它有时需要超过六位小数的精度。在这里,精度显然在转换中丢失了。任何指针将不胜感激。
【问题讨论】:
【参考方案1】:这是to_string 的参考。请注意,它会产生“根据需要写入尽可能多的数字来表示整数部分,后跟小数点字符和六个小数位”。
问题的其余部分是大量 SO 分析器的欺骗 - 例如,请参阅 here。
【讨论】:
【参考方案2】:我相信您正在寻找的是 std::fixed ,如下所述: http://www.cplusplus.com/reference/ios/fixed/
【讨论】:
【参考方案3】:使用ostringstream
将解决您的问题。
#include <sstream>
double var = 1.0000001;
ostringstream os;
os << setprecision(10) << var;
string str = os.str();
cout << str << endl; // this should print 1.0000001
【讨论】:
另见***.com/questions/20594520/…以上是关于在 C++ 中将 Double 转换为字符串的问题的主要内容,如果未能解决你的问题,请参考以下文章
在 UITextField 操作中将 UITextField 字符串转换为 Double