Python的整除和取余

最近做题发现-123%10=7,于是查阅了一下python的取余机制,这里记录。

参考:https://blog.csdn.net/sun___M/article/details/83142126

//:向下取整

int():向0取整

正数的取余比较直接:

print(123%10) #3

这里结果为3。

但是换为负数取余,情况就有所不同: 

print(-123%10) #7
print(-123%-10) #-3

这里面第二条是我们一般意义上的取余操作。这里也特别标注一下,如果涉及到负数取余要用上述解决办法。

那么我们看第一条,结果等于7。这个结果有点让人摸不到头脑,不过这个结果与Python的底层机制有关。

在Python中,取余的计算公式与别的语言并没有什么区别:r=a-n*[a//n]

这里r是余数,a是被除数,n是除数。

不过在“a//n”这一步,当a是负数的时候,我们上面说了,会向下取整,也就是说向负无穷方向取整。这也就得到:

-123%10 = -123 - 10 * (-123 // 10) = -123 - 10 * (-13) = 7

这里还不得不提的是

print(123%-10) #-7

这个通过公式我们也能清楚地计算出来。

posted @ 2021-02-18 18:09  bokeyuan6  阅读(3943)  评论(0编辑  收藏  举报