取余和取模

无论是取余还是取模公式皆为 \(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中,%为取模运算