作者: Extra 時間: 2017-10-2 00:20 標題: Excel 簡單算式 D1=A1-B1-C1 無法顯示正確答案
本帖最後由 Extra 於 2017-10-2 00:22 編輯
小弟有以下一個 Excel 算式疑問,向大家請教。
使用 Excel 2010 及 2013 版本。
A1 輸入 2295.2
B1 輸入 2283.5
C1 輸入 11.7
D1 輸入 =A1-B1-C1
為什麼 D1 會顯示 -1.81188E-13,而不是 0 呢?
https://h2.hkepc.com/forum/attachment.php?aid=2014926&k=e50267e777785347f6fd04863d68322c&t=1781645135&sid=2sWpjFuCiu

作者: slyh 時間: 2017-10-2 02:14
Floating point precision 問題(我估),可以試下係browser console打2295.2-2283.5-11.7,都係出-1.8118839761882555e-13
可參考:
https://stackoverflow.com/questi ... g-point-math-broken
作者: bhkk00 時間: 2017-10-2 03:02
本帖最後由 bhkk00 於 2017-10-2 03:05 編輯
十進制小數變2進制好易出現問題, 例如0.2, 0.7會出現無限長2進制小數
直到嗰個儲存方法極限, 會做rounding
然後做完 + - 再變返十進制
所以有小數, 計完之後 最後rounding 一次
例如 round(D1, 5)
作者: s20021139 時間: 2017-10-2 17:11
本帖最後由 s20021139 於 2017-10-2 17:16 編輯
EDIT: 唔知點解...公式: =A1-B1-C1
https://h2.hkepc.com/forum/attachment.php?aid=2015119&k=3e9045c58eeae2a877d6b0773bd92165&t=1781645135&sid=2sWpjFuCiu

作者: wing_hk 時間: 2017-10-18 23:16
這是浮點運算中的必然結果, 在很多硬件中都會出現可以用以下連結中兩種方法避免錯誤結果
https://support.microsoft.com/zh ... te-results-in-excel
https://social.technet.microsoft ... mal-bug?forum=excel


