为什么输出与我预期的不同?

Why is the output different from what I expected?

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

c = 1324
v = 1324.99

我预计 v 的输出应该是 1324.987。为什么 v 中的数据与输出不同?

我在 Windows 8 32.

上使用 code 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;
}

浮点类型由于其固定宽度表示而继承舍入误差。有关详细信息,请参阅 What Every Computer Scientist Should Know About Floating-Point Arithmetic

使用cout打印时默认精度为6,所以只会显示小数点后6位。该数字四舍五入为最接近的值,这就是您看到 1324.99 的原因。您需要 set a higher precision 才能看到更多 "correct" 价值

但是,设置精度太高可能会在后面打印出很多乱码,因为二进制浮点类型不能准确存储所有十进制浮点值。