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

时间:2015-12-11 07:02:03

标签: python python-3.4 integer-division

我是Python的新手,我现在正在学习操作员。 我明白了:

  • /运算符用于floating point division
  • //代表integer division

示例:

7//3 = 2

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

我被困在这里。

2 个答案:

答案 0 :(得分:27)

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

7/-3  -> -2.33333...
7//-3 -> floor(7/-3) -> floor(-2.33333...) -> -3
PEP 238 更改分部操作员

  

//运算符可用于明确请求 floor 部门。

另请参阅Why Python's Integer Division Floors(感谢@eugene y) - 基本上7//-3-7//3,因此您希望能够写下:

-7 = 3 * q + r

q整数(负,正或零)和r整数,0 <= r < 3。这仅适用于q = -3

-7 = 3 * (-3) + 2

答案 1 :(得分:8)

//分区的运营商。

这意味着在除法完成后应用“floor”函数(从除法中检索的值向下舍入到最接近的整数,无论小数部分是大于还是小于0.5)

至于你的例子,请注意,对于否定答案,场内分割算子仍将向下舍入(例如-5/2 - > -2.5 - > -3)。