编程中取余和取模有什么区别?

描述:

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

  • 取余:向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。

posted @ 2021-06-07 16:22  菜鸟玩Java  阅读(1123)  评论(0编辑  收藏  举报