我有以下部分代码:
string v;
getline(linestream,v,' ');
double d=atof(v.c_str());
fprintf(writeFile3,"%f\n",(double)d);
但是让我们说第一行的值为0.08012901,但是d = 0.080129省略了最后2个值,我怎样才能获得完整的双值?
谢谢
答案 0 :(得分:1)
如果您想要精确复制数字,到目前为止最简单的方法是将数字保留为字符串形式:
string v;
getline(instream, v, ' ');
outstream << v;
几乎所有将数字转换为double
的内容,然后打印出的值至少有可能产生与输入略有不同的结果。
答案 1 :(得分:0)
小数位并不是存储在d
中。只是fprintf
默认只打印6个小数位。要打印8,请尝试
fprintf(writeFile3, "%.8f\n", d);
您不必将d
转换为double
,因为它已经是double
类型。
答案 2 :(得分:0)
我会在上面的答案中加上你在变量调用后放置的内容就是你要显示的内容。默认情况下,C ++将显示6。
即 fprintf(writeFile3,&#34;%。3f \ n&#34;,(double)d);将在结尾显示3个小数点。它也将填充,如果有可能超过8位小数,你会想要更多它。据我所知,你不能设置一个标志来显示所有小数点。它必须是明确的。