负数楼层划分
Floor division with negative number
表达式 6 // 4
产生 1
,其中 floor 除法在除以数字后产生整数。
但是负数,为什么-6 // 4
return -2
?
//
运算符显式 floors 结果。引用 Binary arithmetic operations documentation:
the result is that of mathematical division with the ‘floor’ function applied to the result.
下限与四舍五入为 0 不同;地板总是移动到 较低的整数值 。见 math.floor()
function:
Return the floor of x, the largest integer less than or equal to x.
对于-6 // 4
,首先计算-6 / 4
的结果,所以-1.5
。地板然后移动到较低的整数值,所以 -2
.
如果您想改为向零舍入,则必须明确地这样做;您可以使用 int()
真正除法的函数来做到这一点:
>>> int(-6 / 4)
-1
int()
删除小数部分,因此始终向零舍入。
楼层划分也将向下舍入到下一个最低的数字,而不是下一个最低的绝对值。
6 // 4 = 1.5
,向下舍入为 1,向上舍入为 2。
-6 // 4 = -1.5
,向下舍入为 -2,向上舍入为 -1。
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.
//
被定义为做与 math.floor()
相同的事情:return 小于或等于浮点结果的最大整数值。 Zero is not less than or equal to -0.1.
一个有用的方法来理解为什么 floor 除法 // 产生它对负值的结果,将其视为对模数或余数 % 运算符的补充。
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
等生成序列时。
表达式 6 // 4
产生 1
,其中 floor 除法在除以数字后产生整数。
但是负数,为什么-6 // 4
return -2
?
//
运算符显式 floors 结果。引用 Binary arithmetic operations documentation:
the result is that of mathematical division with the ‘floor’ function applied to the result.
下限与四舍五入为 0 不同;地板总是移动到 较低的整数值 。见 math.floor()
function:
Return the floor of x, the largest integer less than or equal to x.
对于-6 // 4
,首先计算-6 / 4
的结果,所以-1.5
。地板然后移动到较低的整数值,所以 -2
.
如果您想改为向零舍入,则必须明确地这样做;您可以使用 int()
真正除法的函数来做到这一点:
>>> int(-6 / 4)
-1
int()
删除小数部分,因此始终向零舍入。
楼层划分也将向下舍入到下一个最低的数字,而不是下一个最低的绝对值。
6 // 4 = 1.5
,向下舍入为 1,向上舍入为 2。
-6 // 4 = -1.5
,向下舍入为 -2,向上舍入为 -1。
//
是一个 "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.
//
被定义为做与 math.floor()
相同的事情:return 小于或等于浮点结果的最大整数值。 Zero is not less than or equal to -0.1.
一个有用的方法来理解为什么 floor 除法 // 产生它对负值的结果,将其视为对模数或余数 % 运算符的补充。
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
等生成序列时。