-4

重複の可能性:
Java で倍精度の問題を修正する方法

次のような小さなコードがあります。

double number1 = 6;
double number2 = 5.99;
double result = number1 - number2;

ただし、result == 0.009999999999999787代わりに 0.01

IEEE 754 標準の問題であることはわかっていますが、その理由がわかりません。説明していただけますか?

4

2 に答える 2

4

これは、浮動小数点数をビット数が制限された2進法で正確に表すことができないためです(精度の低下がないわけではありません)。

参照: http: //en.wikipedia.org/wiki/Loss_of_significance

于 2012-12-10T22:07:23.360 に答える
1

浮動小数点数に.01がないためです。小数ビットは1/root 2、.0125のようなものを取得できるように表現されますが、浮動小数点数には.01はありません。正確な精度が必要な場合は、代わりに整数を使用してください。

于 2012-12-10T22:08:18.433 に答える