Java模数与除法差异

时间:2014-10-16 13:38:16

标签: java

2 / 4 = 0; // it should be 0.5, but the result is 0

2 % 4 = 2 // its should be 0, cuz there are no remainders, but somehow the result is 2

为什么它会给出这个结果,我做错了什么?

2 个答案:

答案 0 :(得分:4)

对于第一个:由于24是整数,这是整数除法,这意味着丢弃任何小数部分。它被四舍五入。如果要强制它为浮点,则需要2/4.02.0/4。现在其中一个是浮点double而不是int,因此结果也是double

对于第二个:当你将2除以4时,得到0余数2,所以答案是2。我怀疑你正在考虑将4除以2,在这种情况下,剩余部分当然是0,所以如果你尝试4 % 2,你将获得0作为结果。

答案 1 :(得分:1)

分割两个int(s)的结果是int。将一个参数更改为double,如

double v = ((double) 2 / 4);
System.out.println(v);

你会得到

0.5

最后(对于模数),4进入2 0次。并且,2 - (4*0) = 2;所以模数运算(或余数)是正确的。