java中取模运算%和取余运算floorMod的区别:

对于整数 a ,b来说,取模运算和取余运算的过程相同:

  1. 求整数商:c = a / b
  2. 计算模或者余数: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