Python中的整数除法

6 投票
5 回答
4449 浏览
提问于 2025-04-17 05:02

我对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取整的规则解释了你所看到的行为。

撰写回答