关于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
posted @ 2021-11-01 17:01  乐乐熊小妹  阅读(124)  评论(0编辑  收藏  举报