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
爲什麼它給出了這個結果,我做錯了什麼?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
爲什麼它給出了這個結果,我做錯了什麼?Java模塊和分區差異
對於第一個:由於2
和4
是整數,這是做整數除法,這意味着任何小數部分被丟棄。它被捨去。如果你想強制它成爲浮點,你想要2/4.0
或2.0/4
。現在其中一個是浮點數double
而不是int
,所以結果也是double
。
對於第二個:當你除以4時,你得到0餘數2,所以答案是2
。我懷疑你正在考慮將4除以2,在這種情況下,其餘的肯定是0,所以如果你嘗試4 % 2
,你會得到0
。
除以2 int
(s)的結果是int
。一個參數更改爲double
,像
double v = ((double) 2/4);
System.out.println(v);
,你會得到
0.5
最後(對模數),4個進入2 0
倍。並且,2 - (4*0)
= 2;所以模數運算(或餘數)是正確的。
「整數算術」 – Bathsheba 2014-10-16 13:38:52
因爲java不支持自動類型轉換。 – 2014-10-16 13:39:21
我應該如何使用正確的結果? – WebEinstein 2014-10-16 13:39:38