2016-09-15 83 views
-2

我正在使用以下代碼格式化雙精度值。 例如,如果輸入是,則輸出雙倍值應該是34.00以2位小數進行雙倍轉換的字符串

Double value = new Double(34); 
DecimalFormat decimalFormat =new DecimalFormat(); 
decimalFormat.applyPattern("#.00"); 
System.out.println("String format " + decimalFormat.format(value)); 
double formattedValue =Double.valueOf(decimalFormat.format(value)); 
System.out.println("double format " + formattedValue); 

這裏輸出:

字符串格式34.00
雙格式的34.0

我不想使用BigDecimal

這裏我們最後的要求是將格式化的值存儲在雙類型字段中。

+3

「雙」值沒有「格式」。 –

+0

您正在存儲您的數值。 'double'不能保留重要的數字,所以無論你的字符串有多少數字,當你打印出來時你仍然會得到34.0。打印時,您將不得不重新格式化雙面打印。 –

+0

請勿將其分配給* formattedValue *。打印* decimalFormat.format(value)*本身(如@Reimeus所示) – blackpen

回答

1

A double可以格式化爲您在第一個示例中看到的任何種類的String,但double在內部沒有格式(至少有一個可以修改)。這就是爲什麼無論你做什麼都不能使你的第二行打印34.00,而不將它轉換爲String

0

嗯,我的意思是,總是有好老的printf ...

System.out.printf("value is %.0f\n", value); 

或同樣地:

String formatted = String.format("%.0f", value); 

重申的其他意見:雙爲雙。它沒有固有的顯示格式。格式化它是如何顯示它的函數。

+0

簡短而快捷! – blackpen