最近做題發現-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
這個通過公式我們也能清楚地計算出來。