2012-12-16 20 views
0

在我的代碼我正在執行數字劃分和存儲在一個雙變量。但變量只返回一個精度。我想提高精度,我怎麼能做到這一點。雙返回在java中只有一個精度

double x; 
     for (int i =0 ; i<10000 ; i++) 
     { 

      x= w[i]/l[i]; 
      System.out.println(x); 
     } 

在上面的代碼中w和l是整數數組;像

3.0 
0.0 
1.0 
0.0 

我得到的輸出我想提高精度高達4 ATLEAST。

+3

Java使用浮點數,沒有設置精確值這樣的事情。你的錯誤是你用整數分割整數(產生一個整數結果),並給結果分配一個double。嘗試將'x = w [i]/l [i]'改爲'x =(double)w [i]/l [i]'。 – onon15

回答

2

如果您將另一個int除以int,您將得到一個int不是一倍。嘗試

x = (double) w[i]/l[i]; 
6

使用

x = ((double) w[i])/l[i]; 

正因爲如此,你將使用整數除法兩個整數,並指派的int雙重產生的。將其中一個操作數轉換爲雙精度值可以改爲雙精度。

-1
System.out.printf("%10.4f", x); 

注意,只有BigDecimal具有精確的精度。雙打是近似值。

+0

你已經錯過了這裏的實際問題。 – EJP

+0

@EJP是的,這些不可或缺的結果足夠可疑。雖然已經給出了主要的積分劃分錯誤及其雙重解決方案。 –