小数的楼层划分返回错误答案

flp*_*lpn 5 python python-3.x

我试图在我的 python 脚本中做一些计算,但我得到了一些奇怪的结果。例如:

0.03 // 0.01
>>> 2.0
Run Code Online (Sandbox Code Playgroud)

如果我放大数字,我会得到预期的结果:

3.0 // 1.0
>>> 3.0
Run Code Online (Sandbox Code Playgroud)

我很确定第一个代码片段的答案应该是3.0而不是2.0。有人能解释一下为什么会发生这种情况以及如何解决吗?

yat*_*atu 5

这是由于浮点错误造成的。请注意,对于上述楼层划分,余数不是0

0.03 % 0.01
# 0.009999999999999998
Run Code Online (Sandbox Code Playgroud)

因此,如果我们改为除以:

0.03 // 0.009
# 3.0
Run Code Online (Sandbox Code Playgroud)

答案是正确的。因此,由于浮点数的限制,0.03不能被无余0.01数整除