Curso de java. ¿Como presentar números con formato?.

Dando continuidad a la página del curso de java donde empezamos a tratar los objetos envoltorio y la clase number, os traigo una nueva entrega con información relevante sobre el tratamiento de datos numericos.

En ocasiones nos podemos ver necesitados de saber ¿como presentar números con formato?, que los métodos que conocemos hasta ahora, como es el método print y el método println no pueden realizar.

Java pone a nuestra disposición el método printf y el método format  (Ambos incluidos en el paquete java.io), para llevar a cabo presentaciones o salidas numéricas en pantalla con el formato apropiado que queramos aplicar. Ambos métodos son idénticos y para usarlos tan solo tenemos que sustituir el método print o println por alguno de los anteriores:


«cadena» indica el formato que se utilizará y «args» las variables a tratar. Con el siguiente ejemplo se entenderá mejor el funcionamiento de ambos métodos;

Ejemplo de uso de métodos printf() y format()

Se han incluido dentro de «cadena» aparte de los caracteres que forman cualquier cadena otros caracteres que anteponen el símbolo de tanto por ciento (%) y una letra que señala a que variable hace referencia. Este tipo de indicadores de formato se utiliza mucho en lenguaje c también.

En esta tabla se indican algunos identificadores que nos ayudarán a saber como presentar números con formato:

Indicadores de Formato

Indicador.Descripción.
%cImprime un Caracter.
%dImprime a decimal con signo. Uso con enteros generalmente.
%fImprime con coma flotante. Uso en float.
%sImprime una cadena. Uso con String.
%uImprime un decimal sin signo. uso con enteros.
%oImprime un número octal. Uso con enteros.
%iImprime decimal, uso con enteros. Es igual que %d mostrando la salida, pero entrando datos con scanf difiere de %d, ya que se pueden especificar valores octales y hexadecimales.
%ximprime hexadecimal sin signo.
%pválido para punteros.
%nNueva linea.
%%Imprime el carácter %.

Si necesitáis echar mano de mas especificadores o convertidores de formato en esta página de oracle hay extensa información.

Ejemplo de salidas númericas con formato usando el método printf().

Este programa presentará en consola los siguientes resultados:
Curso de java. Salidas con formato. Método printf.

La clase NumberFormat.

La clase NumberFormat viene incluida en el paquete java.text y sirve para dar formato de salida a números pudiendo especificar localidades o países diferentes, así como el lenguaje a tratar.

Crear un objeto  de la clase NumberFormat para una determinada localidad.

Para especificar una determinada localidad y presentar salidas con formato conforme a dicha localidad, tenemos que crear un objeto de la clase Local incluida en el paquete java.util y otro objeto de la clase NumberFormat:

El constructor de la clase Local puede no tener parámetros, tener solo la denominación del país o como en el ejemplo incluir el lenguaje y la denominación del país como parámetros.

Se puede comprobar que es muy sencillo usar esta clase. El resultado en consola del programa anterior seria:

Curso de Java. Salida en consola. Clase NumberFormat

Como podemos apreciar España e Inglaterra utilizan distintas formas de separar los miles y decimales. En este enlace podeis acceder a una lista bastante completa de las abrievaturas ISO utilizadas para cada lenguaje y la siguiente imagen detalla la abreviatura de los paises:


La clase DecimalFormat.

la clase decimalFormat del paquete java.text ofrece métodos que ayudan a dar formato si este consiste en agregar ceros ya sea al principio o al final, introducir separadores de miles (signo «coma») y decimal (signo «punto»).

Aquí hay un programa de ejemplo que ilustra el uso de la clase DecimalFormat:

Este código anterior dará el siguiente resultado en consola:

Curso de Java. Salida en consola. Clase DecimalFormat

Cada símbolo «#» representa un dígito, el punto «.» separa en decimales y la coma «,» en miles conforme a nuestra configuración local. Luego veremos que podemos cambiar dicha configuración y el tipo de separador.

También podemos crear un método cuando necesitemos presentar varios números con distintos formatos de salida. Este ejemplo abarca distintos formatos de salida utilizando un método:

En consola obtenemos los siguientes resultados:
Curso de Java. Salida en consola. Clase DecimalFormat


Dato 1 muestra el ejemplo visto anteriormente, donde la almohadilla representa un dígito. En Dato 2 hemos suprimido almohadillas tanto en la parte de miles como en decimales donde solo tenemos dos almohadillas. Al suprimir una almohadilla en la parte decimal no podemos representar los tres decimales y java redondea el resultado.

En Dato 3 vemos que se han incluido ceros (0) en el patrón. El cero actúa como la almohadilla, es decir representa a un dígito, pero si en el número no hay dígito en una posición el cero ocupa dicha posición. En este caso vemos que se añaden dos ceros a la izquierda (parte de miles) porque en patrón hay (6 ceros) y el dato tiene solo (4 dígitos). y en la parte decimal se añade un cero porque el patrón tiene (3 ceros) y el dato (2 dígitos).

En Dato 4 vemos que podemos incluir cualquier símbolo (Excepto comillas, lógicamente) delante de la primera almohadilla que tengamos en el patrón y este se presentará en pantalla.

Hasta aqui llega esta página, donde hemos visto distintas maneras de presentar números con formato por consola. Espero esta información sea de utilidad y como siempre digo os animo a comentar cualquier duda que os pueda surgir.

¿Te ha gustado? Compártelo.

Añadir un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

  Acepto la política de privacidad

Información sobre protección de datos

  • Responsable: MIGUEL ANGEL SANZ
  • Fin del tratamiento: Moderar los comentarios. Responder las consultas
  • Legitimación: Tu consentimiento
  • Destinatarios 1&1 Internet España S.L.U. Politica de privacidad. https://www.ionos.es/terms-gtc//terms-privacy/.
  • Derechos: Acceder, rectificar y suprimir los datos.
  • Información adicional: Más información en nuestra política de privacidad.