2013-05-20 48 views
-2

好,所以這是一個代碼似乎沒有意義的較大代碼中的問題。下面是代碼是問題...它啓動時打印Ratio = 0.0控制檯應該等於〜0,348。Java數學沒有意義

public class MathTest { 

    public static void main(String[] args) { 

     double ratio = 29511/84812; 
     System.out.println("Ratio = "+ ratio); 

    } 

} 

編輯:如果

的代碼是這樣的:

public class MathTest { 

    public static void main(String[] args) { 
     int int1 = 7; 
     int int2 = 13; 
     double double1 = int1/int2; 
     System.out.println("double1 = "+ double1); 

    } 

} 

它再次打印 「0.0」。

回答

6

當您說29511/84812(在Java中丟失了小數點)時,您無意中使用了整數除法。使用double文字(有.0增加),而不是:在這裏工作

double ratio = 29511.0/84812.0; 

其他的解決方案:

  • 鑄造其中之一爲double(double) 29511/84812
  • 使用 'd' 的另一種方式來表示Java double文字:29511D/84812D
+2

或倍率= 29511D/84812D; – Mena

+0

如果有兩個整數,如 int int1 = 7; int int2 = 13; double double1 = int1/int2; System.out.println(「double1 =」+ double1); – user2313066

+0

@Mean正確,那是另一種方式。 – rgettman

0

替換double ratio = 29511/84812double ratio = 29511.0/84812.0;

0

它是非常有意義的。你將兩個整數分開來得到一個整數。這意味着在這種情況下爲0。

3

你在做整數除法,因爲2951184812是整數。除法的結果爲0,並且將它保存爲雙倍,因此它變爲0.0。

要解決這個問題,請將賦值右側的一個操作數強制轉換爲double。

double ratio = (double)29511/84812; 
+0

謝謝你解決了第二個問題 – user2313066