2016-05-16 11 views
1

Ich möchte doppelte Werte auf dem Bildschirm mit 2 Dezimalstellen ausdrucken. Bisher diese Linie perfekt gearbeitet hat:Java Double Format zeigt 2 Dezimalpunkte an, auch wenn Null

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

Für Eingänge wie:

double value = 82348238482834.23482348; 

Es druckt:

$82,348,238,482,834.23 

das ist genau das, was ich will. Wenn ich jedoch den Eingang 0 habe, möchte ich es ausdrucken $0.00. Mit der obigen Formatzeile wird $0 ausgedruckt. Ich habe versucht, die Änderung der oben genannten Code zu:

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

Aber das $.00 ausgedruckt. Ich könnte nur das tun:

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

Es funktioniert, aber es ist sehr hässlich. Gibt es eine andere Möglichkeit, dieses Problem zu lösen?

+1

Nun ja, '0' * immer * druckt,' # 'nur * bedingt * druckt ... also was denkst du willst du kurz vor dem Punkt? –

Antwort

2

Verwendung:

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

Geändert:

"$#,##0.00" 

Wie Jon sagte, 0 zeigt eine Ziffer, so enthält es Null, # eine Ziffer gibt aber Null zeigt, wie nicht vorhanden.

Für weitere Informationen über DecimalFormat.

0

Ich verstehe nicht, warum Menschen immer noch diese DecimalFormat Sachen verwenden. Um zu erreichen, was Sie wollen, verwenden Sie einfach System.out.printf mit dem folgenden Muster.

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

Wenn der Wert 0 wird es immer als 0.00 oder 0,00 je nach Region gedruckt werden.