负数为

时间:2016-05-17 18:30:42

标签: python python-3.x division integer-division

表达式6 // 4产生1,其中除法除以数字后产生整数。

但是如果数字为负数,为什么-6 // 4会返回-2

4 个答案:

答案 0 :(得分:6)

//运算符明确 floor 结果。引用Binary arithmetic operations documentation

  

结果是数学除法,其中'floor'函数应用于结果。

地板与舍入为0不同;地板总是移动到较低的整数值。请参阅math.floor() function

  

返回 x 的最低值,小于或等于 x 的最大整数。

对于-6 // 4,首先计算-6 / 4的结果,-1.5。然后,地板移动到较低的整数值,因此-2

如果你想要向零舍入,你必须明确地这样做;您可以使用真正除法的int()函数执行此操作:

>>> int(-6 / 4)
-1

int()删除小数部分,因此总是向零舍入。

答案 1 :(得分:2)

地板分割也将向下舍入到下一个最低数字,而不是下一个最低绝对值。

6 // 4 = 1.5,向下舍入为1,最多为2。

-6 // 4 = -1.5,向下舍入为-2,最高为-1。

答案 2 :(得分:0)

Python中的

//是一个"底层部门"运营商。这意味着这种划分的结果是常规划分结果的底限(用/运算符执行)。

给定数字的最大值是小于此数字的最大整数。例如

7 / 2 = 3.5 so 7 // 2 = floor of 3.5 = 3.

对于负数,它不太直观:-7 / 2 = -3.5,所以-7 // 2 = floor of -3.5 = -4。同样-1 // 10 = floor of -0.1 = -1.

//被定义为与math.floor()做同样的事情:返回小于或等于浮点结果的最大整数值。 Zero is not less than or equal to -0.1.

答案 3 :(得分:0)

一种有用的方法可以理解为什么分区//产生负值的结果,这就是对模数或余数,%运算符的补充。

5/3  is equivalent to 1 remainder 2 

5//3 = 1
5%3 = 2

但是

-5/3 = -2
-5%3 = 1

或者

-2 + 1/3rd which is -1.6667 (ish)

它看起来很奇怪,但它确保了诸如此类的结果 生成序列时-2,-2,-2,-1,-1,-1,0,0,0,1,1,1,2,2,2,3,3,3等。