编程中取余和取模一样吗?区别是什么?

描述:

取余和取模极其相似,常常会让人以为两者是同一样性质,其实不然。在符号相同时,两者不会冲突,符号不同时就会有以下区别:

  • 取余:向0舍入。
  • 取模:向负无穷舍入。

符号相同:

比如:9 / 5 = 1.8会有两个商1和2。

9 = 5 * 1 + 4或9 = 5 * 2 + (-1),因为是向0舍入,取前者计算结果,9 余 5 = 4,9 模 5 = 4。

符号不同:

比如:9 / (-5) = -1.8会有两个商-1和-2。

9 = (-5) * (-1) + 4或9 = (-5) * (-2) + (-1),9 余 -5 = 4,9 模 -5 = -1。

原则定义:

  • 取余:rem(x, y) = x - y * fix(x / y)。
  • 取模:mod(x, y) = x - y * floor(x / y)。

fix()向0取整,floor()向负无穷取整。

以x = 9,y = -5为例:

  • fix(9, -5) = -1, floor(9, -5) = -2。

  • rem(9, -5) = 4,mod(9, -5) = -1。

上一篇:Opencv单目标定flag的设定


下一篇:【Git】3. Git重要特性-分支操作,合并冲突详解