本文主要是介绍取模和取余正解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
关于取模和取余,网上误人的帖子太多了,也没讲清楚,越看越懵,经过多方查阅和自己的证实,现将正解归纳如下:
计算方法
对于整数 A ,B
取模和取余的运算过程相同:
- 求商:C = A / B
- 计算模或者余数:R = A - C * B
取模和取余的区别仅仅是在计算C的时候不同:
取余计算时:C 值向0方向取整,比如:
C = A / B = 7 / 4 = 1.75 ,向0方向取整,则C取 1 ,则取余R = A - C * B = 3
C = A / B = -7 / 4 = -1.75 ,向0方向取整,则C取-1, 则取余R = A - C * B = -3
C = A / B = -7 / -4 = 1.75 ,向0方向取整,则C取 1, 则取余R = A - C * B = -3
取模计算时:C 值向负无穷方向取整,比如:
C = A / B = 7 / 4 = 1.75 ,向负无穷方向取整,则C取1, 则取模R = A - C * B = 3
C = A / B = -7 / 4 = -1.75 ,向负无穷方向取整,则C取-2,则取模R = A - C * B = 1
C = A / B = -7 / -4 = 1.75 ,向负无穷方向取整,则C取1, 则取模R = A - C * B = -3
总结:
1.当两个数的符号相同,即同为负或者同为正时,取余和取模结果相同,因为C偏向同一个方向取值,使得C值一样。
2.符号不同时,取余结果的符号和分子一致,取模结果的符号和分母一致。
3.Java 中的取余运算是 %,而取模运算是 Math.floorMod() 。
Java 代码验证
public class test {public static void main(String[] args) {System.out.println("------Complementation------");System.out.println(7 % 4);System.out.println((-7) % 4);System.out.println(7 % (-4));System.out.println((-7) % (-4));System.out.println();System.out.println("------Modulo Operation------");System.out.println(Math.floorMod(7, 4));System.out.println(Math.floorMod(-7, 4));System.out.println(Math.floorMod(7, -4));System.out.println(Math.floorMod(-7, -4));}
}
输出结果:
------Complementation------
3
-3
3
-3------Modulo Operation------
3
1
-1
-3
这篇关于取模和取余正解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!