背景:
返回一個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