use*_*828 9 python modulo integer-division
Python中的模数令人困惑.
在Python中,%运算符正在计算余数:
>>> 9 % 5
4
Run Code Online (Sandbox Code Playgroud)
然而:
>>> -9 % 5
1
Run Code Online (Sandbox Code Playgroud)
为什么结果1?不是-4吗?
wim*_*wim 14
因为在python中,符号与分母匹配.
>>> 9 % -5
-1
>>> -9 % 5
1
Run Code Online (Sandbox Code Playgroud)
-10%5为0,即-10均匀地除以5.
你问为什么-9%5不是-4,答案是1和-4都可以是正确答案,这取决于-9除以5是什么.当然-9除以5是1.8,但这是整数除法,在Python 3中用Python表示,所以我在这里使用//清楚它是我们所说的整数除法.
我将通过不使用负数来解释这一点,这更容易.
9 // 5是1.也就是说,你只能从9中减去5,其余的就是4.但是如果你再从9减去5,那么剩下的就变为-1!
所以-1是9%5的正确答案,如果9 // 5是2.
在Python 9 // 5中是1,因为Python整数除法是一个底层划分,即它总是向下舍入.如果它已向上舍入9 // 5将是2,而9%5将为-1.
现在让我们看一下使用负数的情况:-9除以5现在为-2.因为它是地板分割,所以它总是向下舍入.这意味着其余的是1.所以-9%5是1,而不是-4.