为什么输出与我预期的不同?
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" 价值
但是,设置精度太高可能会在后面打印出很多乱码,因为二进制浮点类型不能准确存储所有十进制浮点值。
我运行这段代码,但输出与我预期的不同。 输出:
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" 价值
但是,设置精度太高可能会在后面打印出很多乱码,因为二进制浮点类型不能准确存储所有十进制浮点值。