java中取模运算%和取余运算floorMod的区别:
对于整数 a ,b来说,取模运算和取余运算的过程相同:
- 求整数商:c = a / b
- 计算模或者余数:r = a − c × b
取模运算在取 c 的值时,向 0 方向舍入( fix() 函数);而取余运算在计算 c 的值时,向负无穷方向舍入( floor() 函数)。
%:
System.out.println(5%3);
System.out.println((-5)%(3));
System.out.println((5)%(-3));
System.out.println((-5)%(-3));
结果:2,-2,2,-2
System.out.println(Math.floorMod(5, 3));
System.out.println(Math.floorMod(-5, 3));
System.out.println(Math.floorMod(5, -3));
System.out.println(Math.floorMod(-5, -3));
结果:2,1,-1,-2