似乎取决于编程语言,模运算符答案有所不同。例如,对于c++
之类的表达式,c
,Java
和-10%2
都返回-1,而python3.x
为相同的计算输出1。为什么会这样?
mod的行为因所使用的语言以及所使用的mod的实现方式而异。
这里的行为列表:https://en.wikipedia.org/wiki/Modulo_operation#In_programming_languages
在您的情况下,Python中%
的结果采用除数的符号。
>>> 11%-2
-1
>>> -11%2
1
但是math.fmod
相反。
>>> import math
>>> math.fmod(11,-2)
1.0
>>> math.fmod(-11,2)
-1.0
在Java中,mod获得分红的符号。