表达式 6 // 4 产生 1 ,其中除法除以数字后产生整数 .
6 // 4
1
但是负数,为什么 -6 // 4 返回 -2 ?
-6 // 4
-2
// 运算符显式放置结果 . 引用Binary arithmetic operations documentation:
//
结果是数学除法的结果,将'floor'函数应用于结果 .
地板与舍入到0不是一回事;地板总是移动到较低的整数值 . 见math.floor() function:
返回x的底限,x是小于或等于x的最大整数 .
对于 -6 // 4 ,首先计算 -6 / 4 的结果,所以 -1.5 . 然后地板移动到较低的整数值,所以 -2 .
-6 / 4
-1.5
如果你想要向零舍入,你必须明确地这样做;你可以使用 int() 函数对真正的除法进行此操作:
int()
>>> int(-6 / 4) -1
int() 删除小数部分,因此总是向零舍入 .
地板分区也将向下舍入到下一个最低数字,而不是下一个最低绝对值 .
6 // 4 = 1.5 ,向下舍入为1,最多为2 .
6 // 4 = 1.5
-6 // 4 = -1.5 ,向下舍入为-2,最高为-1 .
-6 // 4 = -1.5
Python中的 // 是一个"floor division"运算符 . 这意味着这种划分的结果是常规划分结果的最低点(用/运算符执行) .
给定数字的最大值是小于此数字的最大整数 . 例如
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.
-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.
math.floor()
Zero is not less than or equal to -0.1.
一个有用的方法来理解为什么地板划分//产生它为负值所做的结果,这看作是对模数或余数,%运算符的补充 .
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 等 .
-2,-2,-2,-1,-1,-1,0,0,0,1,1,1,2,2,2,3,3,3
4 回答
//
运算符显式放置结果 . 引用Binary arithmetic operations documentation:地板与舍入到0不是一回事;地板总是移动到较低的整数值 . 见math.floor() function:
对于
-6 // 4
,首先计算-6 / 4
的结果,所以-1.5
. 然后地板移动到较低的整数值,所以-2
.如果你想要向零舍入,你必须明确地这样做;你可以使用
int()
函数对真正的除法进行此操作:int()
删除小数部分,因此总是向零舍入 .地板分区也将向下舍入到下一个最低数字,而不是下一个最低绝对值 .
6 // 4 = 1.5
,向下舍入为1,最多为2 .-6 // 4 = -1.5
,向下舍入为-2,最高为-1 .Python中的
//
是一个"floor division"运算符 . 这意味着这种划分的结果是常规划分结果的最低点(用/运算符执行) .给定数字的最大值是小于此数字的最大整数 . 例如
对于负数,它不太直观:
-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.
一个有用的方法来理解为什么地板划分//产生它为负值所做的结果,这看作是对模数或余数,%运算符的补充 .
即
但
要么
它看起来很奇怪,但它确保了生成序列时的结果,如
-2,-2,-2,-1,-1,-1,0,0,0,1,1,1,2,2,2,3,3,3
等 .