我明白,當我增加精度時,我應該得到更精確的結果。但是,這並不是從這個例子,我增加了精度很清楚,但我沒有得到正確的結果:使用雙精度和準確性
#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