我不小心偶然发现了 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/3
python 会告诉你它是2
. 当您键入7/-3
它时,它不会变成-2
,因为那不会是地板。-3
是下一个较小的整数。
在执行整数除法时,数字被四舍五入到较低的 int (floor(x)
返回 N 中的最大值n
,使得n <= x
)。这意味着对于负数,四舍五入的数值将具有更高的绝对值(因此7/3 == floor(7//-3) == floor(-2.333)
返回-3
)。