python 中的楼层划分是如何工作的?

How does floor division work in python?

  1. 5//2 = 2;
  2. 5//7 = 0;
  3. 5//-6 = -1;
  4. 5//-2 = -3;
  5. 5//-3 = -2;
  6. 5/-4 = -2;

谁能解释一下这背后的逻辑?

楼层划分以 Python 数学定义的方式工作。

x // y == math.floor(x/y)

也就是说x // y是小于等于x / y

的最大整数

它应该的方式:

5 / 2 = 2.5        (2)
5 / 7 = 0.714285   (0)
5 / -6 = −0.8333   (-1 is the integer below -0.833333)
5 / -2 = −2.5      (-3)
5 / -3 = −1.6666   (-2)

基本楼层。它除以它,然后使它成为下面的整数。

这总是正确的,忽略浮点数问题:

b*(a // b) + a % b == a

这也总是正确的:

((b > 0) == (a % b > 0)) or (a % b == 0)

最后,

abs(a % b) < abs(b)

为了提供这种行为,整数除法向负无穷大舍入,而不是向零舍入。