2022年3月14日 星期一

考慮使用 Decimal 來解決精度的問題

 考慮使用 Decimal 來解決精度的問題

前言

  最近在 Python 發生 round() 無法正常四捨五入的問題,在網上查詢後發現 Python 的 float 會有精度的問題,在此把學習的過程做個紀錄。


內容

  範例如下

from decimal import Decimal,ROUND_HALF_UP
print(round(1.115, 2) )#1.11
print(Decimal('1.115').quantize(Decimal('.00'), ROUND_HALF_UP) )#1.12


1.115 在作 round() 會期望得到 1.12 ,但事實上卻是 1.11 ,要解決這個問題要透過 decimal 模組提供的 Decimal 來處理精度的問題,要四捨五入時透過 quantize()  來完成,這樣就可以得到期望的 1.12 。


參考資料

[ kirin.idv.tw ] Python – decimal 模組教學 – 四捨五入的正確作法

沒有留言:

張貼留言