【发布时间】:2013-05-15 09:59:38
【问题描述】:
版本 2.6.5 如果有帮助。 所以,我在 django 中做一些事情并从 Floatfield 中获取一个值。并将其与另一个浮动场进行比较。我们称它们为 2 X 和 Y。 当我运行它时,X 最终以 35.0 结束。 当我运行它时,Y 最终以 35.0 结束。
35.0 > 35.0 # False, ok no worries
X > Y # True, why?
round(X) > round(Y) # False, ok looks like i have to round it
我知道 float 在计算过程中存在问题,但在这种情况下,我的两个变量的值显示为 35.0,所以我认为它们实际上是 35.0。这是否意味着 python 可能不会在 float 对象后面显示一些信息?我知道这是一个常见问题,但如果它实际上是 35.000000001 或其他东西,python 不会显示整个值吗?
编辑:好的,终于通读了。浮点生活问题现在为我解决了,哈哈。 http://docs.python.org/2/tutorial/floatingpoint.html
【问题讨论】:
-
所以实际上,我还有一个问题。我知道这会发生,但 python 不显示它? 35.0 实际上意味着类似 35.000000000001?
-
基本上...浮点数不精确
-
所以浮点数是不精确的,有时,python 甚至不会显示这种不精确性。因为我从 x 和 y 中得到 35.0 和 35.0。谢谢
-
@JoranBeasley:为什么不呢?
print 35.000000000001打印35.0,即使35.000000000001 == 35.0是False。