Formatos al mostrar resultados de números decimales en Java con printf

Posibilidades al mostrar por pantalla en Java

Cuando trabajamos en Java desde consola / shell, a la hora de mostrar resultados por pantalla hay tres opciones principales:

  • Print (system.out.print): Imprime por pantalla una cadena.
  • Println (system.out.println): Imprime por pantalla una cadena y luego baja una línea (conocido como “retorno de carro”).
  • Printf (system.out.printf): Imprime por pantalla con formato, lo que permite redondear decimales, alinear números en columnas, justificar el texto (a izquierda o derecha), mostrar fecha y hora en varios formatos, y representar números en formato exponencial (notación científica).

 

Mostrando números decimales con printf en Java

La última opción de las anteriormente indicadas permite dar formatos a los números decimales, y es lo que se verá a continuación.

A la hora de imprimir números decimales (float o double) utilizaremos %f en caso de querer mostrarlos de su forma normal, y %e para mostrarlos en notación científica (notación exponencial).

Con %f es posible especificar decimales, espacios en blanco a la izquierda, indicar el signo positivo (+), e incluso separar los miles y millones con puntos. Puesto que es más fácil apreciarlo con un ejemplo, se muestra el siguiente código a continuación:

public class ProgramaFormatos {
  public static void main(String[] args) {
    double cantidad = 71283.567811;

    System.out.println();
    System.out.println("Ejemplo para mostrar un mismo valor con varios formatos"); 

    // El simbolo %n es un salto de linea
    // Formato normal double y float
    System.out.printf("%nEl valor de la variable cantidad es %f", cantidad); 

    // Formato notación científica
    System.out.printf("%nEl valor de la variable cantidad es %e", cantidad); 

    // Formato con 2 decimales
    System.out.printf("%nEl valor de la variable cantidad es %.2f", cantidad);

    // Formato con 6 decimales
    System.out.printf("%nEl valor de la variable cantidad es %.6f", cantidad);

    // Formato con simbolo + y 2 decimales
    System.out.printf("%nEl valor de la variable cantidad es %+.2f", cantidad);

    // Formato con espacios en blanco (suman 11 todas las cifras) con 2 decimales
    System.out.printf("%nEl valor de la variable cantidad es %11.2f", cantidad); 

    // Formato con espacios en blanco (suman 11 todas las cifras) con símbolo + y 2 decimales
    System.out.printf("%nEl valor de la variable cantidad es %+11.2f", cantidad); 

    // Formato con ceros delante (suman 11 todas las cifras) con 2 decimales
    System.out.printf("%nEl valor de la variable cantidad es %011.2f", cantidad); 

    // Formato con ceros delante (suman 11 todas las cifras) con símbolo + y 2 decimales
    System.out.printf("%nEl valor de la variable cantidad es %+011.2f", cantidad); 

    // Formato separando los miles (71,283.567811 en lugar de 71283.567811) 
    System.out.printf("%nEl valor de la variable cantidad es %,f", cantidad);
  }
}

En los comentarios del código podéis ver los detalles de lo que se pretende hacer en cada línea. Los resultados son los siguientes:

formatosjavaprintfdecimal

 

  • El valor de la variable cantidad es 71283,567811
  • El valor de la variable cantidad es 7,128357e+04
  • El valor de la variable cantidad es 71283,57
  • El valor de la variable cantidad es 71283,567811
  • El valor de la variable cantidad es +71283,57
  • El valor de la variable cantidad es XXX71283,57 (cada X corresponde a cada espacio)
  • El valor de la variable cantidad es XX+71283,57 (cada X corresponde a cada espacio)
  • El valor de la variable cantidad es 00071283,57
  • El valor de la variable cantidad es +0071283,57
  • El valor de la variable cantidad es 71.283,567811

Espero que esto le sirva de ayuda a los futuros programadores que se están formando.

Un saludo

 

Leave a comment

Por favor, inicia sesión con uno de estos métodos para publicar tu comentario:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s