You are on page 1of 2

1

DecimalFormat
La clase DecimalFormat de java nos permite mostrar los nmeros en pantalla con el
formato que queramos, es decir, con cuntos decimales, si queremos punto o coma para los
decimales, etc. DecimalFormat tambin es til para presentar un nmero en un JTextField
o recoger el texto del JTextField y reconstruir el nmero.
Un uso simple de DecimalFormat puede ser este
import java.text.DecimalFormat;
...
DecimalFormat formateador = new DecimalFormat("####.####");

// Esto sale en pantalla con cuatro decimales, es decir, 3,4324
System.out.println (formateador.format (3.43242383));
Si usamos ceros en vez de #, los huecos se rellenarn con ceros.
import java.text.DecimalFormat;
...
DecimalFormat formateador = new DecimalFormat("0000.0000");

// Esto sale en pantalla con cuatro cifras enteras
// y cuatro decimales, es decir, 0003,4300
System.out.println (formateador.format (3.43));
Porcentajes
Una caracterstica curiosa, es que si usamos en la mscara el signo de porcentaje %, el
nmero se multiplicar automticamente por 100 al presentarlo en pantalla.
DecimalFormat formateador = new DecimalFormat("###.##%");

// Esto saca en pantalla 34,44%
System.out.println (formateador.format(0.3444));
DecimalFormatSymbols
La clase DecimalFormat usa por defecto el formato para el lenguaje que tengamos
instalado en el ordenador. Es decir, si nuestro sistema operativo est en espaol, se usar la
coma para los decimales y el punto para los separadores de miles. Si estamos en ingls, se
usar el punto decimal.
Una opcin para cambiar esto, es crear una clase DecimalFormatSymbols, que vendr
rellena con lo del idioma por defecto, y cambiar en ella el smbolo que nos interese. Por
ejemplo, si estamos en espaol y queremos usar el punto decimal en vez de la coma,
podemos hacer esto.
2

import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
...
DecimalFormatSymbols simbolos = new DecimalFormatSymbols();
simbolos.setDecimalSeparator('.');
DecimalFormat formateador = new DecimalFormat("####.####",simbolos);

// Esto sale en pantalla con punto decimal, es decir, 3.4324,
System.out.println (formateador.format (3.43242383));
Reconstruir el nmero
Si suponemos que un usuario escribe en un JTextField un nmero, podemos leerlo y
reconstruirlo con DecimalFormat
JTextField textField = new JTextField();
...
DecimalFormat formateador = new DecimalFormat("####.####");
String texto = textField.getText();
try
{
// parse() lanza una ParseException en caso de fallo que hay
// que capturar.
Number numero = formateador.parse(texto);
double valor = numero.doubleValue();
// Estas dos lneas se puede abreviar con
// double valor = formateador.parse(texto).doubleValue();
}
catch (ParseException e)
{
// Error. El usuario ha escrito algo que no se puede convertir
// a nmero.
}

You might also like