在 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 转换为字符串的问题的主要内容,如果未能解决你的问题,请参考以下文章

在 C++ 中将变量名转换为字符串

在 C++ 中将数字转换为字符串的最佳方法? [复制]

在 UITextField 操作中将 UITextField 字符串转换为 Double

在pyspark中将字符串价格值转换为double类型

如何使用 Swift 在 xCode 中将 textField 的字符串转换为 Double [重复]

如何在 C++ 中将数字转换为字符串,反之亦然