以java代码为例
一、取余是数学中的概念,取模是计算机中的概念,两者都是求两数相除的余数
1.当两数符号相同时,取模和取余的结果相同,比如:7%4 与 7 Mod 4 结果都是3
2.当两数符号不同时,取模和取余的结果不同
二、取模和取余的运算规则
取余运算,在计算商值时,商值向0方向舍入,靠近0原则。
取模运算,在计算商值时,商值向负无穷方向舍入;尽可能让商值小的原则(不超多商值的最大值)。商取小原则
例子:
取模(mod:Math.floorMod(x,y))
System.out.println(Math.floorMod(5,3));
简述 | 商值 | 取模值 | |
5 mod 3 = 2 | 5/3 = 1.66 商取小原则 商=1 | 5 - 3 * 1 = 2 | 2 |
-5 mod 3 = 1 | -5/3 = -1.66 商取小原则 商=-2 | -5 - (3 * -2) = 1 | 1 |
5 mod -3 = -1 | 5/-3 = -1.66 商取小原则 商=-2 | 5 - (-3 * -2) = -1 | -1 |
-5 mod -3 = -2 | -5/-3 = 1.66 商取小原则 商=1 | -5 - (-3 * 1) = 2 | -2 |
取余(%:x%y)
System.out.println(5%3);
简述 | 商值 | 取余值 | |
5 rem 3 = 2 | 5/3 = 1.66 商靠0原则 商=1 | 5 - 3 * 1 = 2 | 2 |
-5 rem 3 = -2 | -5/3 = -1.66 商靠0原则 商=-1 | -5 - (3 * -1) = - 2 | -2 |
5 rem -3 = 2 | 5/-3 = -1.66 商靠0原则 商=-1 | 5 - (-3 * -1) = 2 | 2 |
-5 rem -3 = -2 | -5/-3 = 1.66 商靠0原则 商=1 | -5 - (-3 * 1) = - 2 | -2 |
三、总结
在计算商值时,
取余:靠近0原则。
取模:商取小原则。