最近在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