電腦算術

在許多程式語言中,雙精度的 0.1 + 0.2 == 0.3 這個比較結果為假,其原因下列何者正確?

  1. A因為加法指令有時無法正確執行小數的加法
  2. B因為0.3是無法以浮點數表示的特殊值,比較結果恆為假
  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. 正確。由於各自的捨入誤差,結果稍有不同。
練習這個領域 前往領域頁面

電腦算術的其他題目

  1. IEEE 754單精度的機器epsilon(1與比1大的下一個可表示的數之差)是多少?
  2. 單精度與雙精度浮點數可信賴的十進位有效位數參考值,下列何者組合正確?
  3. IEEE 754的非正規化數(次正規數)所扮演的角色,下列何者正確?
  4. 在含有大量非正規化數的計算中,某些處理器的處理速度可能會大幅變慢。因此在重視效能的場合會使用的設定為下列何者?
  5. 在IEEE 754浮點數的運算中,將正數除以0時,規格所規定的結果為下列何者?