我对python中的以下整数数学感到困惑:
-7/3 = -3
因为(-3)*3 = -9 < -7
. 我明白。
7/-3 = -3
我不明白这是如何定义的。(-3)*(-3) = 9 > 7
. 在我看来,它应该是-2,因为(-3)*(-2) = 6 < 7
.
这是如何运作的?
我对python中的以下整数数学感到困惑:
-7/3 = -3
因为(-3)*3 = -9 < -7
. 我明白。
7/-3 = -3
我不明白这是如何定义的。(-3)*(-3) = 9 > 7
. 在我看来,它应该是-2,因为(-3)*(-2) = 6 < 7
.
这是如何运作的?
从文档中:
对于(普通或长)整数除法,结果是整数。结果总是向负无穷大四舍五入:1/2 为 0,(-1)/2 为 -1,1/(-2) 为 -1,(-1)/(-2) 为 0。
四舍五入-inf
解释了您所看到的行为。
这是它的工作原理:
int(x)/int(y) == math.floor(float(x)/float(y))
扩展 aix 和 robert 的答案。
考虑这一点的最佳方法是向下舍入(朝向负无穷大)浮点结果:
-7/3 = floor(-2.33) = -3
7/-3 = floor(-2.33) = -3
Python 向下舍入。7/3 = 2 (2+1/3) -7/3 = -3 (-2+1/3)
/ 用于浮点除法 // 用于整数除法(返回整数)
并且python将结果向下舍入