Formatear números en Java con la clase DecimalFormat

Con la clase DecimalFormat podemos dar formato a los números a partir de un patrón determinado.

Un patrón es un String que contiene el formato que queremos dar al número.

Un ejemplo de patrón puede ser este:

String dosDecimalesConSeparador = "#,###.##";   

Este patrón está indicando que los números se representarán con dos decimales y además contendrán el separador de miles.

Veamos a continuación una serie de ejemplos de uso de la clase DecimalFormat para dar formato a valores numéricos y mostrarlos formateados por pantalla

Ejemplo 1: formatear un número de tipo double para que se muestre con dos decimales y con el punto separadores de miles.

double n = 5589625.5;
String patron = "#,###.##";
DecimalFormat formato = new DecimalFormat(patron);                                                                
System.out.println(formato.format(n));

Salida:

5.589.625,5   

Aunque en el patrón hemos indicado que el número se muestre con dos decimales, solo obtenemos uno ya que el número solo tiene un decimal. El carácter # indica que en esa posición va una cifra pero no de forma obligatoria como en este caso.

Si queremos mostrar siempre dos decimales debemos sustituir el carácter # por el carácter 0:

double n = 5589625.5;
String patron = "#,###.00";
DecimalFormat formato = new DecimalFormat(patron);                                                                
System.out.println(formato.format(n));

Salida:

5.589.625,50     

Ejemplo 2: formatear dos números de tipo double para que se muestren por pantalla con dos decimales y sin el separador de miles.

double n = 5589625.5;
double m = 0.332;
String patron = "#.00";
DecimalFormat formato = new DecimalFormat(patron);                                                                
System.out.println(formato.format(n));                                                                            
System.out.println(formato.format(m));

Salida:

5589625,50     
,33

Con este patrón, si la parte entera del número es 0 no se muestra. Para que salga debemos sustituir el carácter # por el carácter 0.

double n = 5589625.5;
double m = 0.332;
String patron = "0.00";
DecimalFormat formato = new DecimalFormat(patron);                                                                
System.out.println(formato.format(n));
System.out.println(formato.format(m));

Salida:

5589625,50     
0,33

Ejemplo 3: En este ejemplo veremos como indicar el número de cifras de la parte entera del número rellenando con ceros las cifras que falten. Se formatean dos números de tipo double para que se muestren por pantalla con tres decimales, sin el separador de miles y además que la parte entera se muestre con 9 cifras. Si la parte entera del número tiene menos de 9 cifras se completará con ceros.

double n = 5589625.5;
double m = 0.3389;
String patron = "000000000.000";
DecimalFormat formato = new DecimalFormat(patron);                                                                
System.out.println(formato.format(n));
System.out.println(formato.format(m));

Salida:

005589625,500     
000000000,339

Ejemplo 4: En este ejemplo veremos como indicar que el número se muestre en notación exponencial. Se da formato a dos números de tipo double para que se muestren por pantalla con tres decimales y a continuación la letra E seguida del valor del exponente que se mostrará con dos cifras. Además la parte entera del número se mostrará con dos cifras.

double n = 5589625.5;
double m = 0.3389;
String patron = "00.000E00";
DecimalFormat formato = new DecimalFormat(patron);                                                                
System.out.println(formato.format(n));
System.out.println(formato.format(m));

Salida:

55,896E05     
33,890E-02

1 comentario: