Python 3 中的整数除法 - 负数的奇怪结果
Integer division in Python 3 - strange result with negative number
我是 Python 的新手,我现在正在学习运算符。
我的理解是:
/
运算符用于 floating point division
和
//
对于 integer division
。
示例:
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)。
我是 Python 的新手,我现在正在学习运算符。 我的理解是:
/
运算符用于floating point division
和//
对于integer division
。
示例:
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)。