2010-02-06 11 views
9

Ich habe folgendes Dezimalformat zuvor:Verwendung von DecimalFormat für den folgenden Fall

private static final DecimalFormat decimalFormat = new DecimalFormat("0.00"); 

So

es ändern können:

0.1 -> "0.10" 
0.01 -> "0.01" 
0.001 -> "0.00" 

Was ich möchte, ist

0.1 -> "0.10" 
0.01 -> "0.01" 
0.001 -> "0.001" 

Ist es möglich, dass ich damit erreichen kann DezimalFormat?

Antwort

20

DecimalFormat Klasse nicht "Thread Safe" ist. Daher ist es besser, eine statische String-Variable für dieses Format zu haben, während Sie das DecimalFormat-Objekt innerhalb Ihrer Methoden-Required-Methode definieren sollten.

statische Variable:

private static final String decimalFormatStr = "0.00#"; 

.

lokale Variable in der Methode:

DecimalFormat decimalFormat = new DecimalFormat(decimalFormatStr); 
+3

+1 für die Erwähnung von Thread-Sicherheit. – Kevin

+0

Danke Kevin. Viele Leute vergessen das bei der Verwendung von DecimalFormat. –

+0

Danke für die Erwähnung von Thread-Sicherheit. Ich überprüfe schnell meinen ganzen Code und repariere sie :) –

13

Ja, verwenden Sie diese:

new DecimalFormat("0.00######"); 

Die # bedeutet eine Ziffer dort angezeigt werden soll, außer für nachfolgende Nullen. Die 0 bedeutet, dass immer eine Ziffer angezeigt wird, auch wenn es sich um eine nachgestellte Null handelt. Die Anzahl der Dezimalstellen in der formatierten Zeichenfolge überschreitet nicht die Gesamtzahl von 0 s und s nach dem Punkt. In diesem Beispiel werden die Ziffern nach der 8. Dezimalstelle abgeschnitten.

+0

prost halten wollte, ist die nachfolgenden Nullen –

6

Sie können es wie folgt tun:

NumberFormat f = NumberFormat.getNumberInstance(); 
f.setMinimumFractionDigits(2); 

System.out.println(f.format(0.1)); 
System.out.println(f.format(0.01)); 
System.out.println(f.format(0.001)); 
+0

ist 'NumberFormat' Thread-sicher? – WitVault

Verwandte Themen