zoukankan      html  css  js  c++  java
  • 关于python3round与float的四省五入精度的问题

     
    解决方式:
    print(Decimal(i["assert_value2"]).quantize(Decimal('0.00')))
    以上解决方案,当i["assert_value2"]='54359.905'时,最终打印的结果会时54359.90,与四省五入值不一致:
    由于python3对这个的处理是,当.905离.91与.90距离一样时,取偶数端0.90,那如果第三个小数为5,我们就在后面拼接一个1的小数:如下
     
    if "." in i["assert_value2"]:
        front_str, back_str = str(i["assert_value2"]).split('.')
        if len(back_str) == 3 and back_str[2] == '5':
            i["assert_value2"] = str(i["assert_value2"]) + "1"
    i["assert_value2"] = Decimal(i["assert_value2"]).quantize(Decimal('0.00'))
    这个时候,i["assert_value2"]得出的就是0.91
    具体样例如下:
    d = '54359.935'
    a1,a2 = d.split(".")
    print(len(a2))
    print(a2[2])
    if len(a2)==3 and a2[2]=='5':
        d = d + "1"
    print(d)
    from decimal import *
    print(Decimal(d).quantize(Decimal('0.00')))
    打印结果如下:
    3
    5
    54359.9351
    54359.94
  • 相关阅读:
    sss
    sss
    sss
    sss
    sss
    sss
    sss
    线程池--相关接口
    NIO(3)--Selector
    SpringBoot--整合Mybatis+druid
  • 原文地址:https://www.cnblogs.com/lelexiong/p/15494544.html
Copyright © 2011-2022 走看看