Why Python's Integer Division Floors ---- python int(6/-132)时答案不一致,向下取整
leetcode150题中有一个步骤: int(6/-132) == 0 or ==-1? 在自己本地python3环境跑是int(6/-132) =0,但是提交的时候确实-1。 查找相关资料解惑: Why Python's Integer Division Floors 为何Python整除运算采用向下取整的规则 今天(又)有人问我,为什么Python中的整除(integer division)返回值向下取整(floor)而不是像C语言中那样向0取整。 在正整数范围内,两者并无实质差别,例如: >>> 5//2 2 但是当操作数之一为负时,结果是向下取整的,也就是远离0(接近负无穷方向): >>> -5//2 -3 >>> 5//-2 -3 或许部分人不太适应,数学上有一个较好的解释为何这样做。整除运算(//)和与之密切相关的取模运算(%)满足如下优美的数学关系式(所有变量均为整数): a/b = q 余数为 r 有 b * q + r = a 而且 0 <= r < b (假设a和b都>=0) 如果希望将这一关系扩展到a为负(b仍为正)的情况,有两个选择:一是q向0取整,r取负值,这时约束关系变为 0 <= abs(r) < b,另一种选择是q向下(负无穷方向)取整,约束关系不变,依然是 0 <= r < b。 在数学的数论中,数学家总是倾向于第二种选择(参见如下