无论是取余还是取模公式皆为 \(r = a - (a / b) * b\), 区别在对商 \(a / b\) 的取整处理上:
- 取余使用 fix(),即趋于零取整
- 取模使用 floor() ,即趋于负无穷大取整
两操作数同号时,取余和取模效果相同。异号时结果就会有差别。
例如:
\[ 4 / (-3) \approx -1.3 \]
取余(C/C++, Java 中的%)
\[ 4 / (-3) = -1 \Rightarrow 4 \% (-3) = 4 - ((-1)*(-3)) = 1 \]取模(Python 中的%) \[ 4 / (-3) = -2 \Rightarrow 4 \% (-3) = 4 - ((-2)*(-3)) = -2 \]
在大多数语言如C/C++,Java中,运算符%是取余运算;少数语言如Python中,%为取模运算。