2011-11-18 61 views
0

我有一個數組,雙陣列像...雙號的乘法出精度和逗號

Double my_array = new Double[] {6272640.0, 43560.0, 4840.0, 0.0015625, 4046856422.400000095, 40468564.223999999, 4046.856422400, 0.004046856, 1.0, 0.404685642}; 

,並在我的計劃,我想乘的每一個與一些整數值元素... 我通過變量n接受。

我已經做了,在我的計劃是...

for(int 1=0;i<my_array.length;i++) 
{ 
my_array[i] = n*my_array[i]; 
} 

當我嘗試打印結果,我得到的值作爲指數... 一樣,3.23E等等等等..... 。

我需要的結果爲雙價值高達8個小數點......

我應該做些什麼來得到它

+0

「我嘗試打印結果」:你如何打印結果? – Thilo

+0

如果用int乘以 – 2011-11-18 06:44:10

回答

0

我改變了我的雙數組String數組,像

String my_array[]; 
my_array = new String[] {"1.006944444","6.45160645160", "0.00000326701", "0.0076001595"}; 

// then used my for loop like 

BigDecimal b1 = new BigDecimal(n); 
for(int 1=0;i<my_array.length;i++) 
{ 
BigDecimal b2 = new BigDecimal(Double.parseDouble(my_array[i])); 
BigDecimal result = b1.multiply(b2); 
System.out.println(result.doubleValue); 
} 

只是自己檢查一下。正如我剛剛描述的邏輯,我的循環有更多的事情要做..

5

你應該格式化你的輸出。

http://docs.oracle.com/javase/tutorial/java/data/numberformat.html(一般解釋) http://download.oracle.com/javase/7/docs/api/java/text/DecimalFormat.html(格式符號)

double yourDouble = 0.1234567890; 
DecimalFormat myFormatter = new DecimalFormat("0.00000000"); 
System.out.println(myFormatter.format(yourDouble)); 

應打印 「0.12345678」。

+0

,字符串到double的含義是什麼也請看看String#格式(Java版本的printf),它具有更簡潔的API。 – Thilo

+0

謝謝親愛的。得到它了... –

0

是否

String str = String.valueOf(double d); 

解決這個問題?

1

嘗試這種方式

​​
0

嘗試了這一點:

double value = X.XX; 
DecimalFormat decimalFormat = new DecimalFormat(); 
DecimalFormatSymbols symbols = new DecimalFormatSymbols(); 
symbols.setDecimalSeparator('.'); // if needed 
symbols.setGroupingSeparator('\u0020'); // if needed 
decimalFormat.setDecimalFormatSymbols(symbols); 

decimalFormat.setMaximumFractionDigits(8); // or any other 
decimalFormat.setMinimumFractionDigits(8); // or any other 
decimalFormat.setRoundingMode(RoundingMode.HALF_EVEN); // if needed 
return decimalFormat.format(value);