我运行此代码,但输出与我的预期不同。 输出:
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;
}
答案 0 :(得分:4)
浮点类型由于其固定宽度表示而继承舍入错误。有关详细信息,请参阅What Every Computer Scientist Should Know About Floating-Point Arithmetic。
答案 1 :(得分:3)
使用cout
打印时的默认精度为6,因此仅显示6位小数。数字四舍五入到最接近的值,这就是你看到1324.99的原因。您需要set a higher precision才能看到更“正确”的值
但是,设置精度太高可能会打印出大量垃圾数字,因为二进制浮点类型无法准确存储所有十进制浮点值。