为什么在python中-11%5计算为4?

为什么在python中-11%5计算为4?,python,modulus,Python,Modulus,我熟悉通常的mod结果,但不熟悉负数。逻辑是什么?取自 %模运算符从第一个参数除以第二个参数得到余数。数值参数首先转换为通用类型。零对参数引发ZeroDivisionError异常。参数可以是浮点数,例如,3.14%0.7等于0.34,因为3.14等于4*0.7+0.34。模运算符总是产生一个与其第二个操作数具有相同符号或零的结果;结果的绝对值严格小于第二个操作数[1]的绝对值 看起来模运算符总是产生和第二个运算符符号相同的结果。 因此,对于-11模式5,将产生正4结果 >>>

我熟悉通常的mod结果,但不熟悉负数。逻辑是什么?

取自

%模运算符从第一个参数除以第二个参数得到余数。数值参数首先转换为通用类型。零对参数引发ZeroDivisionError异常。参数可以是浮点数,例如,3.14%0.7等于0.34,因为3.14等于4*0.7+0.34。模运算符总是产生一个与其第二个操作数具有相同符号或零的结果;结果的绝对值严格小于第二个操作数[1]的绝对值

看起来模运算符总是产生和第二个运算符符号相同的结果。 因此,对于-11模式5,将产生正4结果

>>> -11 % 5
4
而11模-5将产生负-4结果

>>> -11 % 5
4
>>> 11 % -5
-4
发现−b mod N,只需继续向−直到数字介于0和N之间

在你的例子中,N=5,b=−11把5加到-11,得到-6,再加上-1,再加上4


所以,−11 mod 5=4。

Python的模运算符%总是返回一个与分母除数具有相同符号的数字


在-11%5中,因为5是正数,所以您得到的输出是正数

想象一个5小时而不是12小时的时钟。将手放在5的顶部位置,向后移动11小时。手在哪里?注意,你做了两个完整的旋转,然后你有一个小时的空闲时间。。。