我不小心偶然发现了 python 中的一个奇怪行为。在 repl 中输入这种和平的代码。
In [29]: 7 /-3
Out[29]: -3
找不到任何对此结果的合理解释。这里发生了什么?
我不小心偶然发现了 python 中的一个奇怪行为。在 repl 中输入这种和平的代码。
In [29]: 7 /-3
Out[29]: -3
找不到任何对此结果的合理解释。这里发生了什么?
Python 整数除法将结果舍入负无穷大。
原因: http: //python-history.blogspot.com.au/2010/08/why-pythons-integer-division-floors.html
在进行整数除法时,python 会四舍五入到下一个较低的整数(下一个整数)。这就是为什么如果你计算7/3python 会告诉你它是2. 当您键入7/-3它时,它不会变成-2,因为那不会是地板。-3是下一个较小的整数。
在执行整数除法时,数字被四舍五入到较低的 int (floor(x)返回 N 中的最大值n,使得n <= x)。这意味着对于负数,四舍五入的数值将具有更高的绝对值(因此7/3 == floor(7//-3) == floor(-2.333)返回-3)。