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