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

  

posted on 2021-08-18 16:10  刚刚好1  阅读(1786)  评论(0编辑  收藏  举报

导航