解决方式:
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