python中執行精確小數的計算


在進行浮點數計算時它們無法精確表達出所有的十進制小數位。

a = 4.1
b = 5.329
print(a+b)
 
9.428999999999998

這些誤差實際上是底層CPU的浮點運算單元和IEEE754浮點數算數標准的一種“特性”。python的浮點數類型保存的數據采用的是原始表示形式,因此使用float實例時就不能避免這樣的誤差。

我們可以使用decimal模塊避免這種操作(如果不介意犧牲下性能):

from decimal import Decimal
a = Decimal('4.1')
b = Decimal('5.329')
print(a+b)
 
9.429

注意Decimal的參數必須是字符串,不能是浮點型,否則誤差依舊存在。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM