Por favor, activa JavaScript y desactiva tu adblock para este sitio

El Javatar

Blog dedicado a la Programación en Java, C, PHP, Phyton, HTML, SQL y Mucho Más

viernes, 18 de abril de 2014

Como Cambiar el Formato de Salida de los Numeros en Java

Como Cambiar el Formato de Salida de los Numeros en Java
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:

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