Formateo de nýmeros en Java
miércoles, enero 16, 2002 at 1:00AM Formeteo de números en cadenas.
Fecha de creación: 15.01.2002
Revisión 1.0.1 (30.01.2003)
Isaac Ruíz
rugi AT javahispano DOT org
|
Una de las operaciones más comunes que tenemos que hacer cuanto trabajamos con números es el darles formato, ya sea con el fin de cumplir con los requerimientos de impresión o simplemente mostrar los datos de una manera más agradable y legible al usuario.
Java proporciona la clase NumberFormat (java.text.NumberFormat para ser mas precisos :p) para realizar este tipo de operaciones; los principales métodos, o por lo menos los más utilizados, de esta clase son: setMinimumIntegetDigits, setMinimumFractionDigits, setMaximumIntegerDigits y setMaximunFractionDigits. Aunque prácticamente con leer los nombres de los métodos nos damos cuenta de la función de cada uno de ellos, es mucho mejor verlos trabajar en un ejemplo.
import java.text.NumberFormat;
public class formato
{
public static void main (String[] argv){
double value = 361.23456789;
/*
Inicio. primeramente con el método getInstance obtenemos
el formato numerico actual.
Por ser NumberFormat una clase abtracta no utilizamos la
palabra clave new
*/
NumberFormat nf = NumberFormat.getInstance();
/*
Datos. Nuestra variable value tiene originalmente 8 digitos en
la parte fraccionaria y 3 digitos en la parte entera.
*/
// Caso 1.
// ¿Qúe pasará si definimos que solo tenga 5, se truncará o
// se redondeará? la respuesta es que se redondeara.
// lo siguiente mostrará: 361.23457
nf.setMaximumFractionDigits(5);
System.out.println(nf.format(value));
// Caso 2.
// ¿Y si le definimos mas digitos fraccionales de los que tiene?
// la respuesta es que muestra el número tal cual.
// lo siguiente mostrará: 361.23456789
nf.setMaximumFractionDigits(10);
System.out.println(nf.format(value));
// Caso 3.
// ¿Y si le definimos menos enteros de los que tiene?
// En este caso el numero sí es truncado.
// lo siguiente mostrará: 61.23456789
nf.setMaximumIntegerDigits(2);
System.out.println(nf.format(value));
// Caso 4
// ¿y en el caso contrario?
// Pues ocurre lo mismo que en el caso 2,
// el numero se muestra tal cual.
// lo siguiente mostrará: 361.23456789
nf.setMaximumIntegerDigits(5);
System.out.println(nf.format(value));
}
}
Sin tanto comentario el código queda de la siguiente manera:
import java.text.NumberFormat;
public class formato
{
public static void main (String[] argv){
double value = 361.23456789;
NumberFormat nf = NumberFormat.getInstance();
nf.setMaximumFractionDigits(5);
System.out.println(nf.format(value));
nf.setMaximumFractionDigits(10);
System.out.println(nf.format(value));
nf.setMaximumIntegerDigits(2);
System.out.println(nf.format(value));
nf.setMaximumIntegerDigits(5);
System.out.println(nf.format(value));
}
}
La clase NumberFormat es una buena opción para darle formato a tus números, además de los métodos que se acaban de mostrar, cuenta con otros métodos un tanto más especializados para darle un formato mas especifico a los números; ya sea ponerle el separador de miles, determinar el formato númerico del país en donde se ejecutará la aplicación,y otros más.
El objetivo ahora fué sólo mostrarte los métodos más comunes de esta clase y sobre todo el que conozcas su existencia para utilizarla cuando la requieras.
Recursos
Acerca del autor
Isaac Ruíz
Isaac Ruíz, RuGI, egresado del ITI (Istmo de Tehuantepec, Oaxaca, Mexico) en la Carrera de Ingeniería en Sistemas Computacionales, es actualmente desarrollador independiente Java con intenciones de realizar el examen de certificación
Cuando no esta programando o navegando (¿?) le gusta mucho leer todo aquello que le de el mas pequeño indicio de como llegar al Valhala o por lo menos a Avalon =:D .
j2se 
Reader Comments