Muchas veces tenemos la necesidad de darle un formato de salida a los números que se muestran, por ejemplo, si tenemos un double con 8 decimales y sólo queremos que se vean 2, ó tal vez queremos cambiar los separadores de miles y decimales, entre otras cosas. Para esto Java nos ofrece en primera instancia una clase llamada DecimalFormat.
El uso de esta clase es tan sencillo como solamente importar la librerÃa necesaria, crear el objeto e inicializarlo con el formato de salida deseado y formatear los números a través de un método de la clase; pero para entenderlo mejor vamos a ver algunos ejemplos.
Si queremos que un número tenga sólo 3 decimales, lo harÃamos de la siguiente forma:
Ahora, si por ejemplo estamos haciendo un programa de facturación y queremos que el número de factura tenga siempre por ejemplo 6 dÃgitos de tal forma que si no tiene los 6 dÃgitos se autocompleten con ceros lo harÃamos de la siguiente forma (Mostraré solamente el constructor ya que el resto del código no cambia):
Ahora, si por ejemplo queremos representar número en porcentaje, lo hacemos agregando el respectivo sÃmbolo al final, pero ten en cuenta que al hacerlo, el número ingresado se multiplicará por 100:
Si quisiéramos que se muestren no sólo los separadores de decimales, sino también los separadores de miles, lo harÃamos de la siguiente manera:
Para ver qué otros caracteres son permitidos para darle formato a los números, puedes revisar el API de DecimalFormat.
Sin embargo existe una clase llamada DecimalFormatSymbols a través de la cual podemos cambiar esto. Para ver cómo harÃamos este proceso, haremos un ejemplo:
Como se puede apreciar, a pesar de que asignamos la coma como separador de decimales y el punto como separador de unidades de mil, en el constructor de la clase DecimalFormat expresamos el formato con los valores por defecto de Java, es decir, la coma para unidades de mil y el punto para decimales.
Técnicamente podemos asignar el sÃmbolo que nosotros queramos para separar los miles o los decimales, todo depende nuestras necesidades. Sin embargo para ver qué otros métodos y posibles usos posee esta clase, puedes revisar el API de DecimalFormatSymbols.
Si queremos que un número tenga sólo 3 decimales, lo harÃamos de la siguiente forma:
import java.text.DecimalFormat; public class FormatearNumero { private DecimalFormat df; public FormatearNumero() { df = new DecimalFormat("#.###"); System.out.println(df.format(567.83470152)); // Este número se mostrará en pantalla solamente con // 3 decimales, es decir 567.834 } public static void main(String[] args) { new FormatearNumero(); } }
Ahora, si por ejemplo estamos haciendo un programa de facturación y queremos que el número de factura tenga siempre por ejemplo 6 dÃgitos de tal forma que si no tiene los 6 dÃgitos se autocompleten con ceros lo harÃamos de la siguiente forma (Mostraré solamente el constructor ya que el resto del código no cambia):
public FormatearNumero() { df = new DecimalFormat("000000"); System.out.println(df.format(84)); // Esto mostrará en pantalla el siguiente resultado: 000084 }
Ahora, si por ejemplo queremos representar número en porcentaje, lo hacemos agregando el respectivo sÃmbolo al final, pero ten en cuenta que al hacerlo, el número ingresado se multiplicará por 100:
public FormatearNumero() { df = new DecimalFormat("#.##%"); System.out.println(df.format(0.1756418)); // Esto mostrará en pantalla el siguiente resultado: 17.56% }
Si quisiéramos que se muestren no sólo los separadores de decimales, sino también los separadores de miles, lo harÃamos de la siguiente manera:
public FormatearNumero() { df = new DecimalFormat("#,###.##"); System.out.println(df.format(94751890.368)); // Esto mostrará en pantalla el siguiente resultado: 94,751,890.37 }
Para ver qué otros caracteres son permitidos para darle formato a los números, puedes revisar el API de DecimalFormat.
Cambiar los Separadores de Miles y Decimales
La clase DecimalFormat usa por defecto el lenguaje del sistema operativo para separar los miles y decimales. Es decir, si está en español, usa la coma para los decimales y el punto para las unidades de mil, mientras que si está en inglés usará el punto para los decimales y la coma para los miles.Sin embargo existe una clase llamada DecimalFormatSymbols a través de la cual podemos cambiar esto. Para ver cómo harÃamos este proceso, haremos un ejemplo:
import java.text.DecimalFormat; import java.text.DecimalFormatSymbols; public class FormatearNumero { private DecimalFormat df; private DecimalFormatSymbols simb; public FormatearNumero() { simb = new DecimalFormatSymbols(); simb.setDecimalSeparator(','); simb.setGroupingSeparator('.'); df = new DecimalFormat("#,###.##", simb); System.out.println(df.format(94751890.368)); // El resultado serÃa el siguiente: 94.751.890,37 } public static void main(String[] args) { new FormatearNumero(); } }
Como se puede apreciar, a pesar de que asignamos la coma como separador de decimales y el punto como separador de unidades de mil, en el constructor de la clase DecimalFormat expresamos el formato con los valores por defecto de Java, es decir, la coma para unidades de mil y el punto para decimales.
Técnicamente podemos asignar el sÃmbolo que nosotros queramos para separar los miles o los decimales, todo depende nuestras necesidades. Sin embargo para ver qué otros métodos y posibles usos posee esta clase, puedes revisar el API de DecimalFormatSymbols.
No hay comentarios.:
Publicar un comentario