2016-05-16 32 views
1

我想用2個小數點將雙精度值打印到屏幕上。到目前爲止,這條生產線完美工作:Java雙格式即使在零時也顯示2個小數點

System.out.println(new DecimalFormat("$#,###.##").format(value)); 

對於像輸入:

double value = 82348238482834.23482348; 

它打印出:

$82,348,238,482,834.23 

這正是我想要的。但是,如果我輸入0,我希望它打印出$0.00。通過上面的格式行,它打印出$0。我試着改變上面的代碼到:

double value = 0; 
System.out.println(new DecimalFormat("$#,###.00").format(value)); 

但是,打印出$.00。我可以這樣做:

if(value == 0) { 
    System.out.println("$0.00"); 
} 

它的工作原理,但它非常醜陋。有沒有其他方法可以解決這個問題?

+1

是的,'0' *總是*打印,''只*有條件*打印...所以你認爲你想在點之前想要什麼? –

回答

2

用途:

System.out.println(new DecimalFormat("$#,##0.00").format(value)); 

更改:

"$#,##0.00" 

像喬恩說,0表示一個數字,因此包括零,#表示一個數字,但零顯示爲不存在的。

有關DecimalFormat.

0

更多信息,我不明白爲什麼人們仍然可以使用這個DecimalFormat東西。要實現你想要的只是使用System.out.printf以下模式。

System.out.printf("%,.2f%n", value); 

如果該值是0它將作爲根據語言環境0.000,00總是打印。

相關問題