2013-12-17 44 views
0

我是新來的Java,請幫我這個:爲什麼這個整數方程式輸出0

System.out.println(3 * (4/5) * 6); 

爲什麼答案0?

+4

整數除法。 –

+3

Java中的4/5 = 0 –

+0

您可以將其更改爲Double並獲取小數位數,否則4/5 = 0.8對於Java中的Integer舍入爲0。親自嘗試一下。的System.out.println(4 \ 5); – RossC

回答

0

因爲您正在使用整數,而不是浮動。 4/50.8,但整數不能存儲該數字,因此它被舍入到0。然後等式的其餘部分將數字乘以零,這將始終導致0

轉動號寫入3.04.05.06.0打開方程成基於浮動的一個。

用整數:

3 * (4/5) * 6 = 0

花車:

3.0 * (4.0/5.0) * 6.0 = 14.4

0

記住BODMAS規則

第一個操作將是divide意味着4/5進行評估,並給出了0(因爲4和5是我ntegers和它給0)和任何乘以0給出0

8

它的一個簡單BODMAS表達式評估

評價(3 *(4/5)* 6)將是;

1. (4/5)=0 
2. 3*0=0 
3. 0*6=0 

爲了避免0的回答,您可以modifiy表達

1. (3 * (4.0/5.0) * 6) // return float value 
2. (3*4*6)/5 //return integer value 
3. (3 * (4/ 5.0) * 6) // return float value 

在這種情況下,答案將是非零這種表達

+0

或保持爲整數do(3 * 4 * 6)/ 5 - 將保持儘可能高的精度,而不必使用浮點數或雙精度。 –

+0

@Tim B..yup true。!! –

0

的「問題」這個詞:

(4/5) 

因爲兩個數字都是int,結果將是int。在整數算術java 截斷小數部分(它不輪),所以結果將爲零(0.8將成爲0)。

0

您使用整數除法(因爲和是都詮釋):

4/5 == 0 // 4/5 = 0 with remainder equals to 4: 0 * 5 + 4 == 4 

這就是爲什麼整個公式

3 * (4/5) * 6 == 0 

如果你想4/5視爲浮莆INT除法,因此它具有的0.8因此,你應該使用浮點數還有:4.05.0

System.out.println(3 * (4.0/5.0) * 6); // <- 14.4 

附:這不僅對Java的典型行爲,但對於C,C++,C#以及

0

因爲你的情況4/5 = 0 < <它是整數除法
爲了解決這個問題,你可以重寫你的代碼如下\

System.out.println(3 * (4 /5.0) * 6);

而結果將是

14.400000000000002