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

时间:2015-06-20 12:23:56

标签: c++ codelite

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

c = 1324
v = 1324.99

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

我在Windows 8 32上使用代码精简版。

#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;
}

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:3)

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

但是,设置精度太高可能会打印出大量垃圾数字,因为二进制浮点类型无法准确存储所有十进制浮点值。