Python中的整数除法

Python中的整数除法,python,math,integer,integer-division,Python,Math,Integer,Integer Division,我对python中的以下整数数学感到困惑: -7/3=-3自(-3)*3=-97。我认为应该是-2,因为(-3)*(-2)=6

我对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,(-2)/1为-1,(-1)/2为0

-inf
四舍五入解释了您看到的行为。

这就是它的工作原理:

int(x)/int(y) == math.floor(float(x)/float(y))
巨蟒四舍五入。 7/3 = 2 (2+1/3)
-7/3=-3(-2+1/3)

扩展aix和robert的答案

考虑这一点的最佳方式是将浮点结果向下舍入(接近负无穷大):

-7/3=楼层(-2.33)=-3


7/-3=floor(-2.33)=-3用于浮点除法
//用于整数除法(返回整数)


python将结果向下取整

python通常遵循最小惊讶的原则。对于整数除法,它总是四舍五入。直接从bdfl本身来看,其基本原理是:对于来这里寻求整数除法帮助的人:在Python 3中,整数除法是使用
/
完成的,例如
-7//3=-3
但是
-7/3=-2.33..
。从数学上讲,
-7/3
7/-3
之间并没有真正的区别,所以有两个不同的结果会更复杂一些。@poke您也可以在Python 2中使用
/
。哎呀,错过了这一点。虽然我不喜欢它,但我现在知道它是如何工作的了。