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