在python或是javascript中常常會有小數溢位或是不夠精確的問題存在。

本文介紹在python中執行精確的小數計算方法。

問題

python在執行浮點運算時沒辦法精確表達所有的十進制小數位。

原因

會有浮點運算誤差的原因就是底層CPU在運算時,他的浮點運算單元(floating point unit – FPU)是利用IEEE-754標準來執行所以會有這種運算”特性“。因此使用float時就無法避免會產生這樣的誤差。

更多關於IEEE-754標準請參考:https://link.medium.com/BcdyiMCLmZ

解決方法

我們可以使用decimal module來避免該問題發生(會犧牲效能)。

這邊Decimal的參數必須是string,不能是float,否則還是會產生誤差。

decimal module也能控制尾數或是四捨五入。

最後修改日期: 2021-03-31

留言

撰寫回覆或留言

發佈留言必須填寫的電子郵件地址不會公開。