【发布时间】:2023-03-05 15:42:01
【问题描述】:
我是 python 新手,在我的 mac 上使用 Python3.5.1 时发现了一个令人困惑的结果,我只是在终端中运行了这个命令
1 // 0.05
但是,它在我的屏幕上打印了 19.0。从我的角度来看,应该是 20。有人可以解释这里发生了什么吗?我已经知道 '//' 类似于 math.floor() 函数。但我仍然无法理解这一点。
【问题讨论】:
-
它先除然后向下舍入。就是这样。
-
@MarkyPython:不仅如此。在我的机器上,
1 / 0.05是20.0,但1 // 0.05是19.0。 -
长话短说:在处理浮点数时不要期待任何特定结果。
-
为什么重新打开? IMO Is floating point math broken? 是一个很好的欺骗目标。
-
@vaultah 我重新打开了它,因为我不认为它与 stackoverflow.com/q/588004/2301450 重复。这个问题是专门关于楼层划分操作员如何工作的。这不是一个关于为什么浮点数学不精确的普遍问题。