0

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

c = 1324
v = 1324.99

我预计输出应该是 1324.987 v。为什么数据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;
}
4

2 回答 2

4

浮点类型由于其固定宽度表示而继承舍入误差。有关更多信息,请参阅每位计算机科学家应了解的浮点运算知识

于 2015-06-20T12:30:53.090 回答
3

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

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

于 2015-06-20T12:49:20.547 回答