【发布时间】:2018-06-29 09:44:12
【问题描述】:
我有这个程序可以计算用户输入的所有值的总数:
result = 0
for i in range(3):
n = float(input("Enter a value: "))
result = result + n
print(result)
如果我输入值 1.2、1.3、1.3,输出将是正确的并打印出 3.8 的结果。但是,当我输入三个相同的浮点值时,似乎会出现浮点错误。例如,1.2、1.2、1.2 将打印出 3.5999999999999996。
为什么会出现这种情况?有没有办法可以防止它?
【问题讨论】:
-
基本上,如果您需要精确算术,请不要使用
floats。相反,请使用decimal模块之类的东西。 -
@PatrickHaugh:
decimal也不准确。大多数情况下,它只是小数,所以它的不精确性更符合人类的直觉。 (它还提供可配置的精度和许多其他高级选项,但它们都不能解决舍入问题。) -
术语浮点错误通常表示除以零或反余弦值太大等异常。您所描述的不是那种错误,而是由于误解浮点数而产生的意外结果。根本问题是
0.1不能准确地用float或double表示,就像1/3不能用十进制表示法准确地表示一样。
标签: python