python 中的楼层划分是如何工作的?
How does floor division work in python?
- 5//2 = 2;
- 5//7 = 0;
- 5//-6 = -1;
- 5//-2 = -3;
- 5//-3 = -2;
- 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)
为了提供这种行为,整数除法向负无穷大舍入,而不是向零舍入。
- 5//2 = 2;
- 5//7 = 0;
- 5//-6 = -1;
- 5//-2 = -3;
- 5//-3 = -2;
- 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)
为了提供这种行为,整数除法向负无穷大舍入,而不是向零舍入。