在常见数据库分表、job分片中,我们需要使用取模算法,把数据分散到集群中每台集群中去
那如果是用% 还是math包中的floorMod 呢?
需要考虑有时候拿一些值取正负是有区别的
System.out.printf("17模以3的值为:%s\n17除以3的余为:%s \n\n", Math.floorMod(17, 3), 17 % 3);
System.out.printf("-17模以-3的值为:%s\n-17除以-3的余为:%s\n\n", Math.floorMod(-17, -3), -17 % -3);
System.out.printf("-17模以3的值为:%s\n-17除以3的余为:%s\n\n", Math.floorMod(-17, 3), -17 % 3);
System.out.printf("17模以-3的值为:%s\n17除以-3的余为:%s\n\n", Math.floorMod(17, -3), 17 % -3);
直接看结果
17模以3的值为:2
17除以3的余为:2
-17模以-3的值为:-2
-17除以-3的余为:-2
-17模以3的值为:1
-17除以3的余为:-2
17模以-3的值为:-1
17除以-3的余为:2