Excel 簡單算式 D1=A1-B1-C1 無法顯示正確答案

本帖最後由 Extra 於 2017-10-2 00:22 編輯

小弟有以下一個 Excel 算式疑問,向大家請教。

使用 Excel 2010 及 2013 版本。

excel_wrong_calculation.JPG

A1 輸入 2295.2
B1 輸入 2283.5
C1 輸入 11.7
D1 輸入 =A1-B1-C1

為什麼 D1 會顯示 -1.81188E-13,而不是 0 呢?

Floating point precision 問題(我估),可以試下係browser console打2295.2-2283.5-11.7,都係出-1.8118839761882555e-13

可參考:
https://stackoverflow.com/questi ... g-point-math-broken

TOP

本帖最後由 bhkk00 於 2017-10-2 03:05 編輯
小弟有以下一個 Excel 算式疑問,向大家請教。

使用 Excel 2010 及 2013 版本。



A1 輸入 2295.2
B1  ...
Extra 發表於 2017-10-2 00:20

十進制小數變2進制好易出現問題, 例如0.2, 0.7會出現無限長2進制小數
直到嗰個儲存方法極限, 會做rounding
然後做完 + - 再變返十進制
所以有小數, 計完之後 最後rounding 一次

例如 round(D1, 5)

TOP

本帖最後由 s20021139 於 2017-10-2 17:16 編輯

EDIT: 唔知點解...公式: =A1-B1-C1

2017-10-02 17-15-24_活頁簿1 - Excel.png

TOP

這是浮點運算中的必然結果, 在很多硬件中都會出現可以用以下連結中兩種方法避免錯誤結果

https://support.microsoft.com/zh ... te-results-in-excel

https://social.technet.microsoft ... mal-bug?forum=excel

TOP