Python中12//5结果为2,为何-12//5结果是-3而非-2?
Python中-12//5结果为-3的原因
Python里的//运算符是地板除法(floor division),它的核心规则是:计算结果向负无穷方向取整,而非简单截断小数部分。
举两个直观例子:
12//5:12÷5=2.4,向负无穷取整得到2,和常规认知一致。-12//5:-12÷5=-2.4,向负无穷方向取整时,要找比-2.4更小的整数,也就是-3,这就是实际返回-3的原因。
这个设计是为了保证除法和取余运算满足恒等式:a = (a//b)*b + (a%b),比如:
- 对12和5:
12 = 2*5 + 2,12%5结果为2,等式成立。 - 对-12和5:
-12 = (-3)*5 + 3,-12%5结果为3,等式同样成立。如果强制让-12//5返回-2,那(-2)*5 + (-12%5)就需要等于-12,此时-12%5得是-2,这会破坏取余结果的一致性(Python中取余结果的符号和除数一致)。
内容的提问来源于stack exchange,提问作者rajrish5541f
相关产品推荐
相关产品推荐

