【问题标题】:Issue with Converting Double to String in C++在 C++ 中将 Double 转换为字符串的问题
【发布时间】: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

在我正在处理的项目中,我需要将双精度值保存为字符串,并且它有时需要超过六位小数的精度。在这里,精度显然在转换中丢失了。任何指针将不胜感激。

【问题讨论】:

    标签: c++ string


    【解决方案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
        
        猜你喜欢
        • 2014-05-01
        • 1970-01-01
        • 2011-06-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多