我猜测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
答案 0 :(得分:2)
为什么呢?因为模运算符是在python中定义的。
模运算符总是产生一个与其符号相同的结果 第二个操作数(或零); [...]
和
函数
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的文章(特别是有关整数模数的部分)可能是一个很好的起点。