所以我知道在使用精度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值保存为字符串,偶尔需要超过六位小数的精度。在这里,转换中明显丢失了精度。任何指针都将非常感激。
答案 0 :(得分:2)
答案 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