Python负数的取余计算

最近在leetcode上用python做题,由于python不是我工作的主要语言,所以对于一些基础特性搞的并不是很清楚,所以在写的过程中会遇到一些奇怪的问题。

在做数字翻转的题目时,因为要用到python的取余计算,但是测试用例中有很多负数,负数的用例我都没有通过。调试时候发现-123%10在python里得到的结果是7。在学习python的四则运算时并没有考虑这么深入,于是记录一下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

Snapline wechat
扫码关注我的公众号“约翰柠檬的唱片店”
Buy me a cup of Coffee