2013-11-21 52 views
2

我是新來的Java,我想知道爲什麼當你有雙10/4你得到2?爲了得到正確的答案,double是否必須有小數?謝謝。Java double x 10/4 = 2?

public class Super { 
    public static void main(String[] args){ 
     double x = 10/4; 
     System.out.println(x); 
    } 
} 
+0

整數失敗...呃...整數除法... – Mysticial

+0

所有答案的基礎原則是重要的。 Java表達式的值取決於操作數的類型和值。它不取決於結果將如何使用。 –

回答

7

在分配結果之前,您正在執行整數除法。整數除法結果爲int,截斷結果爲2。要強制浮點運算,並得到2.5,使用double文字:

double x = 10.0/4.0; 

或投一至double

double x = (double) 10/4; 
0

被替換爲:

double x = 10.0/4.0; 
1

你用整數除以。你可以聲明那些爲下列方式增加一倍(或使用f爲浮動):

double x = 10d/4d; 
System.out.println(x); 
0

雙總是以小數。所以它必須是

public class Super { 
    public static void main(String[] args){ 
     double x = 10.0/4.0; 
     System.out.println(x); 
    } 
} 
1

整數除法。即使您將結果分配給double,仍然會將兩個整數(10和4)分開,以獲得整數結果(實際結果的底線)。

你可以有一個解決這個問題或兩個操作數是浮點值,例如像這樣:

double x = 10.0/4; 

或使用類型轉換:

double x = (double)10/4; 
0

雙您需要使用以下內容

10d/4d 

然後輸出將是2.5否則你只是會結束潛水兩個整數

0

'='的右側是一個整數表達式,它只有在計算後才轉換爲double。因此它將10/4計算爲整數2,然後將該數字轉換爲2。如果你希望它從一開始就是雙倍數,你必須寫

double x = 10.0/4.0; 

只有不能被讀取爲整數的數字將被視爲double。甚至更簡單

double x = 2.5; // :-)