2010-02-06 10 views
9

Ho il seguente formato decimale in precedenza:L'utilizzo di DecimalFormat per il seguente caso

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

Quindi,

si può cambiare:

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

Quello che desidero è

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

E 'possibile che io possa ottenerlo usando DecimalFormat?

risposta

20

classe DecimalFormat non è "filo di sicurezza". Quindi è meglio avere una variabile String statica per questo formato mentre si dovrebbe definire l'oggetto DecimalFormat nel metodo richiesto dal metodo.

variabile statica:

private static final String decimalFormatStr = "0.00#"; 

.

variabile locale nel metodo:

DecimalFormat decimalFormat = new DecimalFormat(decimalFormatStr); 
+3

+1 per aver menzionato la sicurezza del filo. – Kevin

+0

Grazie Kevin. Molte persone dimenticano che durante l'utilizzo di DecimalFormat. –

+0

Grazie per aver menzionato la sicurezza del filo. Riesco a rivedere rapidamente tutto il mio codice e a correggerli :) –

13

Sì, utilizzare questo:

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

Il # significa una cifra deve essere visualizzato tranne che per gli zeri finali. 0 significa che viene sempre visualizzata una cifra, anche se è uno zero finale. Il numero di cifre decimali nella stringa formattata non supererà il numero totale di 0 se # s dopo il punto, quindi in questo esempio le cifre dopo l'8 ° decimale verranno troncate.

+0

applausi voluto mantenere gli zeri finali –

6

È possibile farlo in questo modo:

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

è 'NumberFormat' è thread-safe? – WitVault

Problemi correlati