¿Cómo usar java.text.DecimalFormat para redondear decimales en Java?

| Última modificación: 16 de diciembre de 2024 | Tiempo de Lectura: 3 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

Muchas veces he necesitado mostrar números en Java, pero no de cualquier manera, sino con un formato específico. Me refiero a limitar los dígitos decimales o a adaptar el símbolo decimal, por ejemplo. Buscando y buscando, encontré que java.text.DecimalFormat realmente simplifica este proceso y también me deja personalizar completamente el formato de los números. Voy a explicarte cómo usarlo.

java.text.DecimalFormat qué es

¿Qué es java.text.DecimalFormat?

Te decía que java.text.DecimalFormat en Java, es una clase que fue creada para ayudarte a mostrar números con un formato específico. Entonces, puedes limitar dígitos decimales, usar ceros como relleno, formatear como porcentaje y personalizar el símbolo decimal dependiendo de tus necesidades.

Ten en cuenta que, esta clase lo que hace es usar el formato numérico del idioma que ya está configurado en tu sistema operativo. Así que, si está en español, pues usará la coma como separador decimal, pero si está en inglés, ya sabes que usará el punto.

Para que lo entiendas mejor, imagina que tienes un molde, sí de esos de hacer galletas, pero en este caso sería para números. Tú puedes darle la forma que quieras a los números, según las reglas que definas. Lo grandioso de esta herramienta es que logra adaptar tus datos al formato exacto que necesitas.

¿Cómo usar java.text.DecimalFormat? Ejemplos paso a paso

He preparado unos ejemplos prácticos para enseñarte bien cómo funciona java.text.DecimalFormat:

Formatea números con dígitos decimales

Lo primero que te enseñaré es cómo usar la clase DecimalFormat para redondear o limitar los dígitos decimales de un número:

import java.text.DecimalFormat;

public class Main {
    public static void main(String[] args) {
        DecimalFormat formato = new DecimalFormat("#.##");
        double numero = 123.456789;

        System.out.println("Formato con dos decimales: " + formato.format(numero));
    }
}

Mira la salida:

Formato con dos decimales: 123.46

Rellena con ceros los dígitos faltantes

Cuando quieras que los números tengan un formato uniforme, te recomiendo usar ceros como relleno:

DecimalFormat formato = new DecimalFormat("0000.000");
double numero = 5.2;
System.out.println(formato.format(numero));

Te queda así la salida:

0005.200

Formatea como porcentaje

Un truquito que me sirvió mucho es que, usar el símbolo % en el patrón hace que el número se multiplique automáticamente por 100 y lo verás como porcentaje:

DecimalFormat formato = new DecimalFormat("###.##%");
double numero = 0.875;
System.out.println(formato.format(numero));

Observa la salida:

87.5%

Personaliza el símbolo decimal

Algo muy bueno es que con DecimalFormatSymbols puedes cambiar el símbolo decimal predeterminado. Así es como podrías usar el punto decimal en lugar de la coma:

import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;

DecimalFormatSymbols simbolos = new DecimalFormatSymbols();
simbolos.setDecimalSeparator('.');
DecimalFormat formato = new DecimalFormat("####.####", simbolos);
double numero = 3.14159;
System.out.println(formato.format(numero));

Esta es la salida:

3.1416

Reconstruye números desde texto

También puedes leer un número desde un campo de texto y convertirlo en un formato específico:

import java.text.DecimalFormat;
import java.text.ParseException;

String texto = "1234.56";
DecimalFormat formato = new DecimalFormat("####.##");
try {
    Number numero = formato.parse(texto);
    System.out.println("Número reconstruido: " + numero.doubleValue());
} catch (ParseException e) {
    System.out.println("Error: No se pudo convertir el texto a número.");
}

La salida sería esta:

Número reconstruido: 1234.56

Separadores de miles

Te recomiendo usar el símbolo , (coma) para agregar separadores de miles:

DecimalFormat formato = new DecimalFormat("#,###.00");
double numero = 1234567.89;
System.out.println(formato.format(numero));

Esta es la salida:

1,234,567.89

Consejos a la hora de usar java.text.DecimalFormat

  • Evita errores comunes: Para que no caigas en los mismos errores de siempre, yo te aconsejo que primero te asegures de que el patrón que usas sea compatible con los números que quieres formatear.
  • Considera el idioma del usuario: Esto es muy importante, recuerda cambiar los símbolos decimales si tu aplicación se usará en diferentes regiones.
  • Valida las entradas: No olvides que, cuando vayas a convertir texto a números, maneja correctamente las excepciones como ParseException.
  • No abuses del formateo: Usa DecimalFormat solo cuando realmente necesites presentar los datos en un formato específico, no es necesario que lo uses todo el tiempo.

Espero haberte ayudado a entender que la clase java.text.DecimalFormat es muy buena para trabajar con números en Java. Desde redondear decimales hasta personalizar símbolos y reconstruir valores desde texto, te permite controlar cómo se muestran los datos de manera sencilla y efectiva.

Hay muchos más temas interesantes que puedes practicar con nosotros. Imagina todo lo que podrás aprender en nuestro Bootcamp de Java Full Stack en KeepCoding. Te ayudaremos a convertirte en un experto en programación y a dar el salto al sector IT en tiempo récord. ¡No dejes pasar esta oportunidad de cambiar tu futuro profesional!

Ramón Maldonado

Full Stack Developer y Responsable de Formación base en KeepCoding.

Posts más leídos

¡CONVOCATORIA ABIERTA!

Java y Spring Boot

Full Stack Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado