取模取余对比
System.out.println(12%5); //2
System.out.println(Math.floorMod(12,5)); //2
System.out.println("---");
System.out.println(-12%5); //-2
System.out.println(Math.floorMod(-12,5)); //3
System.out.println("---");
System.out.println(12%-5); //2
System.out.println(Math.floorMod(12,-5)); //-3
System.out.println("---");
System.out.println(-12%-5); //-2
System.out.println(Math.floorMod(-12,-5)); //-2
大家一定对这两行比较好奇
System.out.println(Math.floorMod(-12,5)); //3
System.out.println(Math.floorMod(12,-5)); //-3
第一行源码运行如下还是比较好懂
这里就返回-3
r= -12 - (-3 * 5)
返回3
第二行源码如下
内层返回也还是-3
r=12 -(-5 * -3 )
返回-3
结论:取余正负看前面,取模正负看后面,若取模两数正负不同,结果会偏大。