我明白,当我增加精度时,我应该得到更精确的结果。但是,这并不是从这个例子,我增加了精度很清楚,但我没有得到正确的结果:使用双精度和准确性
#include <iostream>
#include <iomanip>
int main()
{
using namespace std;
cout << setprecision(17);
double dValue;
dValue = 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1;
cout << dValue << endl;
}
输出是0.99999999999999989
有人能解释我为什么会这样?
您正在使用的编程语言是C++。 –
查看IEEE 754标准,http://en.wikipedia.org/wiki/Double-precision_floating-point_format,计算机看不到像0.1这样的东西。它是最接近的二进制数(对于简单的蓝图示例2^-3 = 0.128d)。当您对浮点数进行计算时,您不会得到准确的结果。 – Nabuchodonozor