30%4输出如何为2,但如果我写30 * 4/100输出为1

时间:2015-09-30 06:54:46

标签: java

System.out.println("30%4 = " + 30%4);
System.out.println("33%4 = " + 33%4);

System.out.println("30*4/100 = " + 30*4/100);
System.out.println("33*4/100 = " + 33*4/100);

我的问题是为什么2在30%4的情况下不是1。任何人都可以详细解释我。在此先感谢

4 个答案:

答案 0 :(得分:2)

您必须了解模数的工作原理。 =)当你应用模数时,它会被分割并返回"余数" ...

How Does Modulus Divison Work 已经发布了一个非常好的解释。

答案 1 :(得分:2)

30 % 4 = 2 

,因为:

4 + 4 + 4 + 4 + 4 + 4 + 428所以30 -28 = 2

答案 2 :(得分:0)

在Java中,整数除法返回计算的底限(向下舍入到最接近的整数)。这就是30 * 4/100出现1的原因。

另一方面,模量(%)是整数除法的余数。由于28可被4整除,因此30/4的余数为2(28 + 2 = 30)。

答案 3 :(得分:0)

%运算符是模数,它取两个数字除法后的余数,在你的情况下它除以30乘4,最高倍数是7 7 * 4 = 28现在余数是2,这是你的答案,对于33情况,它做同样的,8 * 4 = 32余数是1