Formatear

💸 Formatear números como moneda

Muy a menudo, cuando trabajamos con números, necesitamos mostrarlos como:

  • Moneda: 1213144$1,213,144.00
  • Porcentaje: 0.110%

En Java podemos hacer esto sin “armarlo a mano”.

🧰 NumberFormat (java.text)

Para formatear números usamos la clase:

NumberFormat (en el paquete java.text)

import java.text.NumberFormat;

📌 Esta clase se usa para convertir números en texto con formato.

⚠️ ¿Por qué NO funciona new NumberFormat()?

Si intentas:

NumberFormat moneda = new NumberFormat(); // ❌

sale error porque:

NumberFormat es abstracta y una clase abstracta no se puede instanciar con new.

✅ La forma correcta: método de fábrica

En lugar de new, usamos un método que “fabrica” el objeto:

NumberFormat moneda = NumberFormat.getCurrencyInstance();

Esto se llama método de fábrica (factory method): crea el objeto por nosotros y lo devuelve.

💵 Ejemplo: formato de moneda

import java.text.NumberFormat;

public class Type1 {
    public static void main(String[] args) {
        NumberFormat moneda = NumberFormat.getCurrencyInstance();
        String resultado = moneda.format(1234566788.12231);
        System.out.println(resultado);
    }
}

✅ Resultado (ejemplo): aparece el símbolo, separa miles y deja 2 decimales.

📌 Ahora porcentaje

Para porcentaje usamos:

NumberFormat.getPercentInstance()

y formateamos un número como 0.1.

✅ Ejemplo: formato de porcentaje

import java.text.NumberFormat;

public class Type1 {
    public static void main(String[] args) {
        NumberFormat porcentaje = NumberFormat.getPercentInstance();
        String resultado = porcentaje.format(0.1);
        System.out.println(resultado); // 10%
    }
}

✨ Encadenamiento de métodos (sin variable extra)

Si solo lo usas una vez, no necesitas guardar el objeto:

import java.text.NumberFormat;

public class Type1 {
    public static void main(String[] args) {
        String resultado = NumberFormat.getPercentInstance().format(0.1);
        System.out.println(resultado);
    }
}

📌 Esto se llama encadenamiento de métodos:

  • primero se crea el formateador,
  • luego se llama .format(...) inmediatamente.