zoukankan      html  css  js  c++  java
  • 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
    

      

  • 相关阅读:
    浏览器渲染原理
    React Router
    链式 add 函数
    函数防抖和函数节流
    242. 有效的字母异位词
    faker 生成模拟数据
    A 第五课 二叉树与图
    使用递归解决问题
    A 第四课 递归_回溯_分治
    A 第三课 贪心算法
  • 原文地址:https://www.cnblogs.com/cuitang/p/15157289.html
Copyright © 2011-2022 走看看