在python 2.7中,我按给定的顺序添加下面的数字(因为我得到的,这些数据来自db的顺序相同)
24.73 + 1 + 0.33 + 0.33 + 0.33 + 0.33 + 0.33 + 0.33 + 0.33 + 0.33 + 0.33 + 0.33 + 0.33 + 0.33 + 0.33 + 0.33 +。 33 + 0.33 + 0.33 + 0.33 + 0.33 + 8 求和结果为39.99999999999997 但实际答案是40
任何建议都会有所帮助。提前谢谢
答案 0 :(得分:1)
来自Python documentation on floats:
请注意,这是二进制浮点的本质:这是 不是Python中的错误,也不是代码中的错误。你会 在支持你的所有语言中看到同样的东西 硬件的浮点运算(虽然有些语言可能没有 默认情况下或在所有输出模式下显示差异。)
所以,这就是浮点数的工作方式。要获得您期望的结果,请尝试使用decimal
module。
>>> 24.73+1+.33+.33+.33+.33+.33+.33+.33+.33+.33+.33+.33+.33+.33+.33+.33+.33+.33+.33+.33+8
39.99999999999997
>>> s = "24.73+1+.33+.33+.33+.33+.33+.33+.33+.33+.33+.33+.33+.33+.33+.33+.33+.33+.33+.33+.33+8"
>>> sum([Decimal(x) for x in s.split('+')])
Decimal('40.00')