最近在一本書中看到作者指出 Excel 在運算上的問題。
如下圖,
若公式:=0.5-0.4-0.1,則結果是正確的。
但公式:=(0.5-0.4-0.1),則結果是錯誤的。
為何加了括號,結果就發生錯誤。
再觀察,公式:=(0.3-0.1-0.1-0.1),也是錯誤的。
但是,公式:=0.5-0.3-0.2和公式:=(0.5-0.3-0.2),是正確的。
這是因為在電腦中的運算是以二進制來運算的。
0.1:0.0001100110011001100110011001100…
0.4:0.0110011001100110011001100110011…
由上圖來看,小數轉換為二進制的結果可能是一個無窮的小數,所以 Excel 在運算=0.5-0.4-0.1時,結果為0是經過修正的結果。
而運算:=(0.5-0.4-0.1)時,因為括號內的結果先運算,因為不是最終結果,所以未被修正。不過,還好雖然結果未被修正,但是通常不影響計算結果,因為產生的誤差已經在有效位數之後了。
你想要自己產生小數的二進制數,可以參考下圖:
儲存格D2:=INT(D1*2/1)
儲存格E2:=D1*2-(D1*2>=1)
複製儲存格D2:E2,貼至儲存格D2:E56。
儲存格B2:="0."&CONCAT(D2:D32)
【參考資料】
CONCAT 函數參考微軟提供的說明網頁:
文章標籤
全站熱搜
留言列表