我运行了这段代码,但是输出与我预期的不同。
输出:

c = 1324
v = 1324.99


我希望v的输出应为1324.987。为什么v中的数据与输出不同?

我在Windows 8 32上使用lite代码。

#include <iostream>
using namespace std;
int main()
{
    double v = 1324.987;
    int n;
    n = int (v);
    cout << "c = " << n << endl;
    cout << "v = " << v << endl;
    return 0;
}

最佳答案

使用cout打印时的默认精度为6,因此仅显示6个小数位。数字四舍五入到最接近的值,这就是为什么看到1324.99的原因。您需要set a higher precision才能看到更多的“正确”值

但是,将精度设置得太高可能会在后面打印出很多垃圾数字,因为二进制浮点类型不能完全存储所有十进制浮点值。

07-26 09:43