python float運算時存在浮點誤差,結果小數點帶.00002及解決方法


背景:

返回一個json字符串,result結果里面嵌套多個內容一樣,只有具體數據不一樣的列表[字典],現在需要從里面取指定的key值,來計算最后的總額。

 

原來使用的類型,float

通過取到json字符串里面的values,然后轉化成float,遇到一個問題,最后相加的總額出現了:1167.5300000000002,計算得出的金額多出了00000000002

 

原因:

在python中浮點數計算是不精確的的,這是因為小數以二進制形式表示時的有窮性導致的,計算機進行浮點運算時的浮點誤差

 

解決方案:

使用decimal模塊,進行替換

sum_payment = 0
            for i in res_json[res_key]:
                pay_ment = jsonpath.jsonpath(i, path)
                # float(payment[0]): 計算機進行浮點運算時的浮點誤差,改用decimal,decimal(只能傳入int和str,不能傳float)
                res_payment = Decimal(str(pay_ment[0]))
                sum_payment += res_payment

  


免責聲明!

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



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