为什么 Python 中的 -22 // 10 返回 -3?
在 Python 中,/ 表示除法运算,// 则表示整数除法运算。整数除法运算的结果是向下取整的整数,也就是说结果一定是比真实值小的整数。
我们先来看一个正数进行整数除法运算的例子:
>>> 17 // 5
3
在这个例子中,17 除以 5 的结果是 3.4,向下取整的结果就是 3,所以整数除法运算结果返回了 3。
如果我们使用一个负数进行整数除法运算,结果也是一样的:
>>> -17 // 5
-4
在这个例子中,-17 除以 5 的结果是 -3.4,向下取整的结果就是 -4,所以整数除法运算结果返回了 -4。
接下来我们看一下为什么在 Python 中,-22 // 10 返回 -3,而不是我们预期的返回 -2。
首先,我们可以通过手动计算,得出 -22 除以 10 的结果是 -2.2。然而,对于整数除法运算返回的结果来说,-2.2 应该向下取整为 -3。所以,我们得到了 -22 // 10 返回 -3 的结论。
我们可以通过 Python 的 math 模块来验证一下这个结果:
import math
print(math.floor(-22 / 10)) # 输出 -3
print(-22 // 10) # 输出 -3
在这个例子中,我们使用了 math.floor 函数来手动向下取整 -2.2,得出结果 -3。然后我们使用 Python 自带的 // 运算符进行整数除法运算,也得到了 -3 的结果。
在 Python 中,整数除法运算的规则很简单:结果永远是向下取整的整数。如果我们知道了这个规则,就能够理解为什么 -22 // 10 返回 -3 了。
阅读更多:Python 教程
结论
在 Python 中,整数除法运算的结果永远是向下取整的整数。使用负数进行整数除法运算时,应该首先将结果向下取整,然后在返回整数值,这才是 Python 返回负数除以正数的正确结果。