python中金額計算的小問題


由於二進制對浮點運算存在精度問題,所以一些浮點計算經常會出現以下情況:

1 # -*- coding: utf-8 -*-
2 
3 a = 1
4 b = 0.9
5 print(a-b)

結果:

0.09999999999999998

我們期望的結果應該是0.1。為了解決這個問題,可以引入python的decimal庫:

1 # -*- coding: utf-8 -*-
2 
3 from decimal import getcontext, Decimal
4 
5 getcontext().prec = 10
6 a = 1
7 b = 0.9
8 print(Decimal(a)-Decimal(b))

結果:

0.1000000000

getcontext().prec = 10把精度設置為10位,注意不是小數點后的位數,而是整個數字的位數。如果需要去掉后面的0,需要用float()轉換一下。在具體的計算中,還需要用Decimal包裝計算的所有數字。


免責聲明!

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



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