描述:
取余和取模极其相似,常常会让人以为两者是同一样性质,其实不然。在符号相同时,两者不会冲突,符号不同时就会有以下区别:
- 取余:向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。