2010-02-06 13 views
9

Tengo el siguiente formato decimal con anterioridad:El uso de DecimalFormat para el siguiente caso

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

Así,

se puede cambiar:

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

Lo que deseo es

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

¿Es posible que pueda lograrlo usando DecimalFormat?

Respuesta

20

clase DecimalFormat no es "hilo de seguridad". Por lo tanto, es mejor que tenga una variable de cadena estática para este formato, mientras que debe definir el objeto DecimalFormat dentro del método requerido por su método.

Variable estática:

private static final String decimalFormatStr = "0.00#"; 

.

variable local en el método:

DecimalFormat decimalFormat = new DecimalFormat(decimalFormatStr); 
+3

+1 por mencionar Seguridad de subprocesos. – Kevin

+0

Gracias Kevin. Mucha gente lo olvida al usar DecimalFormat. –

+0

Gracias por mencionar Thread-safety. Reviso rápidamente todo mi código y lo soluciono :) –

13

Sí, utilice esto:

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

El # significa un dígito se debe mostrar allí excepto por ceros. El 0 significa que siempre se muestra un dígito, incluso si es cero. El número de decimales en la cadena formateada no excederá el número total de 0 sy # s después del punto, por lo que en este ejemplo los dígitos después del octavo lugar decimal se truncarán.

+0

aplausos querían mantener los ceros de la izquierda –

6

Puede hacerlo de esta manera:

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

es 'NumberFormat' es seguro para hilos? – WitVault

Cuestiones relacionadas