表达式6 // 4生成1,其中地板划分在除以一个数字后生成整数。
但是,对于负数,为什么-6 // 4返回-2
发布于 2016-05-17 18:35:25
//操作符显式地降低结果。引用 documentation
结果是将“地板”函数应用于结果的数学除法。
地板与舍入到0不是一回事;地板总是移动到较低的整数值。见 function
返回x的地板,最大整数小于或等于x。
对于-6 // 4,首先计算-6 / 4的结果,因此计算-1.5。地板然后移动到较低的整数值,因此-2。
如果您想将其舍入为零,则必须显式地这样做;您可以在真正除法时使用int()函数这样做:
>>> int(-6 / 4)
-1int()移除小数部分,因此总是以零为圆圈。
发布于 2016-05-17 18:35:49
楼层划分也将降至下一个最低的数值,而不是下一个最低的绝对值。
6 // 4 = 1.5,它分为1圈和2圈。
-6 // 4 = -1.5,从-2圈到-1圈.
发布于 2018-01-28 15:27:34
理解地板分割//产生负值结果的一种有用方法是将其看作是对模或余数%运算符的补充。
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等。
https://stackoverflow.com/questions/37283786
复制相似问题