在C ++中将Double转换为String的问题

时间:2016-03-03 00:34:20

标签: c++ string

所以我知道在使用精度setprecision(int n)打印double值时应该使用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

在我正在进行的项目中,我需要将double值保存为字符串,偶尔需要超过六位小数的精度。在这里,转换中明显丢失了精度。任何指针都将非常感激。

3 个答案:

答案 0 :(得分:2)

以下是to_string的参考资料。请注意,它会生成“根据需要写入多个数字来表示整数部分,后跟小数点字符和六位小数”。

问题的其余部分是很多SO ansers的欺骗 - 例如,见here

答案 1 :(得分:0)

我相信你要找的是std :: fixed,如下所述: http://www.cplusplus.com/reference/ios/fixed/

答案 2 :(得分:0)

使用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