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
为什么它会给出这个结果,我做错了什么?
答案 0 :(得分:4)
对于第一个:由于2
和4
是整数,这是整数除法,这意味着丢弃任何小数部分。它被四舍五入。如果要强制它为浮点,则需要2/4.0
或2.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;所以模数运算(或余数)是正确的。