取模和取余是两回事!
先上结论:
- 在JAVA、C、C++里,%是取余运算,英文remainder;
- 在Python里,%号是取模运算,英文modulus;
- 取余运算的除法是向零舍入,取模运算的除法是向小值舍入;
- 取余运算结果的符号与被除数相同,取模运算结果的符号与除数相同;
- Java中Math.floorMod()函数提供取模运算;
- 一切运算的终极解释:对所有数值a和所有非零数值b满足:(a / b) * b + (a % b) == a;
- 对于Java的除法,最好记的办法就是都按正数做除法,然后添加符号即可。
- 除了boolean类型以外,其他所有基本类型都可以进行取余运算!
先看Java中的除法:
System.out.println(5 / 3);//1
System.out.println(5 / -3);//-1
System.out.println(-5 / 3);//-1
System.out.println(-5 / -3);//1
取余运算:
System.out.println(5 % 3);//2
System.out.println(5 % -3);//2
System.out.println(-5 % 3);//-2
System.out.println(-5 % -3);//-2
System.out.println(5.0 % 3.5);//1.5
System.out.println(5.0 % -3.5);//1.5
System.out.println(-5.0 % 3.5);//-1.5
System.out.println(-5.0 % -3.5);//-1.5
取模运算:
System.out.println(Math.floorMod(5, 3));//2
System.out.println(Math.floorMod(-5, 3));//1
System.out.println(Math.floorMod(5, -3));//-1
System.out.println(Math.floorMod(-5, -3));//-2
Math.floorMod()只支持int和long。
网友评论