为什么Python中的(5%2)和(-5%2)相同

时间:2017-08-22 05:18:54

标签: python-2.7 math

我猜测5%2是1,-5%2是-1

但是,在Python中,我得到了相同的结果。

我认为这不是数学问题。

>>> -5 % 2 
1  ( I think this should be -1 )
>>>  5 % 2
1

>>> -7 % 6 
5 ( I think this should be -1 )
>>> 7 % 6
1

2 个答案:

答案 0 :(得分:2)

为什么呢?因为模运算符是在python中定义的。

documentation州:

  

模运算符总是产生一个与其符号相同的结果   第二个操作数(或零); [...]

  

函数math.fmod()返回符号与之匹配的结果   相反,第一个参数的标志, [...] 哪种方法更多   适当取决于申请。

答案 1 :(得分:1)

您可以通过至少两种不同的方式查看%操作。一个重要的观点是m % n找到Z [n]的元素,它与m一致,其中Z [n]是限制为0,1,2,......的整数的代数表示, n,称为整数环modulo n。注意,所有整数,正数,负数和0,都与Z [n]中的某个元素0,1,2,...,n一致。

这个戒指(也就是说,这个集合加上某些操作)具有许多众所周知且有用的特性。出于这个原因,尝试以导致Z [n]的形式转换问题通常是有利的,因为它可能更容易工作。这最终是Python %被赋予其定义的原因 - 最后,它与模数n的整数环中的运算有关。

如果您想了解有关此主题的更多信息,那么关于modular arithmetic的文章(特别是有关整数模数的部分)可能是一个很好的起点。