Python中的整数除法
我对Python中的整数运算有点困惑:
-7/3 = -3
这个我明白,因为 (-3)*3 = -9 < -7
。我理解这个。
7/-3 = -3
这个我就不太明白了。因为 (-3)*(-3) = 9 > 7
。我觉得结果应该是-2,因为 (-3)*(-2) = 6 < 7
。
这个是怎么回事呢?
5 个回答
1
接着aix和robert的回答,来进一步解释一下。
理解这个问题的最好方法是把它看作是将浮点数结果向下取整(也就是朝着负无穷的方向取整):
-7/3 = floor(-2.33) = -3
7/-3 = floor(-2.33) = -3
4
这是它的工作原理:
int(x)/int(y) == math.floor(float(x)/float(y))
14
来自文档:
对于(普通或长整型)整数除法,结果是一个整数。结果总是向负无穷方向取整:1除以2等于0,-1除以2等于-1,1除以-2等于-1,而-1除以-2等于0。
向-inf
取整的规则解释了你所看到的行为。