Python 3 中的整数除法 - 负数的奇怪结果

Integer division in Python 3 - strange result with negative number

我是 Python 的新手,我现在正在学习运算符。 我的理解是:

示例:

7//3 = 2

7//-3=-3。为什么答案是-3?

我卡在这里了。

//不是整数除法,而是floor除法:

7/-3  -> -2.33333...
7//-3 -> floor(7/-3) -> floor(-2.33333...) -> -3

PEP 238 更改除法运算符:

The // operator will be available to request floor division unambiguously.

另见 Why Python's Integer Division Floors (thanks to @eugene y) - 基本上 7//-3-7//3,所以你希望能够写:

-7 = 3 * q + r

q 一个整数(负数、正数或 nul)和 r 一个满足 0 <= r < 3 的整数。这仅在 q = -3:

时有效
-7 = 3 * (-3) + 2

// 楼层除法 的运算符。

这意味着除法完成后应用 "floor" 函数(从除法中检索到的值向下舍入到最接近的整数 不管 是否小数部分大于或小于 .5)

对于您的示例,请注意对于否定答案,下限除法运算符仍会向下舍入(例如 -5/2 --> -2.5 --> -3)。