2013-10-22 90 views
2

我已經聲明一個變量爲double。我想分割兩個整數並將輸出分配給該雙變量。Java - 由大數分割的小數字

但它沒有考慮像0.1到0.9這樣的值。只有當沒有像4.0整數其返回答案

public static void main(String[] args) throws Exception 
{ 
double itf=0; 
a=4100; 
b=6076 
itf=a/b; 
System.out.println("itf:"+itf) 
} 

輸出是ITF:0.0

請幫助..

回答

7

最有可能的變量ab被定義爲int,其中將導致整數除法結果爲0,當賦值爲double時,結果爲0.0。如果定義abitfdouble那麼結果應該是

0.6747860434496379 

,而不是

0.0 

試試這個代碼:

public static void main(String[] args) throws Exception { 
    double itf = 0; 
    double a = 4100; 
    double b = 6076; 
    itf = a/b; 
    System.out.println("itf:" + itf); 
} 
+0

+1或簡單地施放:'itf =(double)a/b;';) – alfasin

2

ab均爲整數,所以a/b的結果也是一個整數,然後是c因爲雙倍存儲在itf。要獲得正確的結果,您可以將ab定義爲雙打,或者您可以將其中至少一個加倍。例如:

itf = (double)a/b; 
+0

非常感謝您的幫助。問題解決了.. – user2828951

0

您的結果的原因是您正在使用整數除法,然後將結果分配給一個double值。這是你的代碼展開:

int a = 4100; 
int b = 6076; 
int temp = a/b; 
double itf = temp; 

如果你想明確地使用浮點除法,你需要告訴你鑄造至少一個這樣做的編譯器(或全部可以肯定),該操作員將翻一番或浮動。例如:

itf = (double)a/(double)b; 
0

使用foloving澆鑄到至少一個操作數,以double

itf=((double)a)/b; 

itf=a/((double)b); 
1

聲明a或b爲雙。

施放該操作。

itf = (double)(a/b) 

演員的整數之一。

itf = ((double)a)/b 

OR 1.0,這是雙乘法。

itf = (1.0*a)/b