定义
取模(%)运算:求两个数相除的余数
取余运算也是计算余数,那么跟取模是不是一个概念,不一样的叫法呢。
当然不是
取模和取余(/)运算有重叠的部分但是不完全一致;
两者的区别如下:
区别 | 取模(%) | 取余(/) |
---|---|---|
用途 | 主要用于计算机术语中 | 数学概念 |
舍入方式 | 向负无穷方向舍入 | 向0方向舍入 |
计算符号 | mod或"%" | “/” |
计算过程
其中a 是被除数,b 是除数
- 先求整数商 c = [a/b]
- 计算模 r = a - c*b
举例
例子 | 取模 | 取余 |
---|---|---|
a = 7;b = 4 | c = [7/4] = 1; r = 7 - 1*4 = 3; | c = [7/4] = 1; r = 7 - 1*4 = 3; |
a = -7;b = 4 | c = [-7/4] = -2(向负无穷方向舍入);r = -7-(-2)*4=1; | c=[-7/4]=-1(向0方向舍入);r = -7-(-1)*4= -3; |
a = 7;b = -4 | c = [7/(-4)] = -2; r = 7 - (-2)*(-4) = -1 | c = [7/(-4)] = -1; r = 7-(-1)*(-4) = 3; |
a =-7;b =-4 | c = [(-7)/(-4)] = 1; r = -7-1*(-4) = 3; | c = [(-7)/(-4)] = 1; r = -7-1*(-4) = 3; |
归纳
从上表可以总结出几点
- a,b正负号相同时,取模和取余运算结果相同
- a,b异号时,取模和取余计算有差异
- 取模的值同b的符号相同
- 取余的值同a的符号相同
编程语言之间的差异
- C/C++、Java中的取模等同于取余,没有%运算符
- Python中的/为取余,%为取模;差异同本文所讲一致