プログラム QandAd07.java
【原因】
上記はの結果は、有効数字16桁の範囲で等しいといえます。 質問は、順序が違うだけでなぜ結果が異なるか?、ということだと思います。
浮動小数点数の加算をする場合、絶対値の大きい数を基準に、 小さい数の有効数字の桁をそろえて加えます。 絶対値の小さな数は、いつも同じ値というわけにはいかず、 相手方の絶対値によって誤差の大小が(ほんのわずかですが)変わります。
この状況を観察してみましょう。 プログラム DoubleDemo5.java
実行結果
0.2 → 0.3 では多めに、
0.7 → 0.8 では少なめに増えていることがわかります。
1.0 〜 1.9 の範囲では、いずれも多めに増えています。