以下代码段输出0.29847当我本来期望0.29848:C++中的setprecision round吗?如果是这样,我为什么看到这个?
double f = 0.298475;
cout << setprecision(5) << f << endl;
关于其他例子,但是,我发现舍入:
double f = 0.123459;
cout << setprecision(5) << f << endl;
输出:0.12346
和
double f = 0.123454;
cout << setprecision(5) << f << endl;
输出:0.12345
0.298474999999999990318855225268634967505931854248046875。 – dan04
换句话说,实际上有两个舍入步骤:一个是字面'0.298475'转换为'double',另一个是当打印一些数字到'cout'时。 – aschepler
@ dan04:这是一个毫无意义的显示;一个64位IEEE754浮点只包含大约17位十进制数字的信息...... –