電腦算術
在許多程式語言中,雙精度的 0.1 + 0.2 == 0.3 這個比較結果為假,其原因下列何者正確?
- A因為加法指令有時無法正確執行小數的加法
- B因為0.3是無法以浮點數表示的特殊值,比較結果恆為假
- C因為這些數都是以捨入後的近似值表示,誤差使得值稍有不同
查看答案與解析
正確答案:C. 因為這些數都是以捨入後的近似值表示,誤差使得值稍有不同
0.1、0.2、0.3都無法以二進位精確表示,各自被捨入為最接近的值後記錄。將0.1與0.2的近似值相加再捨入,結果為 0.30000000000000004,與0.3的近似值 0.29999999999999998… 在最後一位並不一致。因此浮點數的比較,一般是以差的絕對值是否在微小容許值以下來判定。加法指令是依規格正確地捨入,0.3也能以近似值表示。
- A. 加法指令是依規格正確地捨入。
- B. 0.3也能以近似值表示。
- C. 正確。由於各自的捨入誤差,結果稍有不同。