0Pricing
Java Academy · Lección

Uso de BigDecimal

Aritmética decimal exacta

Uso de BigDecimal es una lección gratuita de Java Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Java Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Java Academy incluye 4 lecciones en total.

Aritmética decimal exacta

BigDecimal, del paquete java.math, representa números decimales con precisión arbitraria y sin errores de redondeo ocultos. Es la herramienta estándar para los cálculos financieros.

Crear un BigDecimal

La forma más segura de crear un BigDecimal es a partir de una cadena. Así se conservan exactamente los dígitos que ha escrito.

import java.math.BigDecimal;

public class Main {
    public static void main(String[] args) {
        BigDecimal amount = new BigDecimal("42.50");
        System.out.println(amount);
    }
}

Inmutabilidad

BigDecimal es inmutable. Las operaciones como add no modifican el objeto original, sino que devuelven un BigDecimal nuevo. Debe guardar el valor devuelto.

import java.math.BigDecimal;

public class Main {
    public static void main(String[] args) {
        BigDecimal a = new BigDecimal("10");
        a.add(new BigDecimal("5"));
        System.out.println(a);
    }
}

Suma y resta

Use add y subtract, y recuerde guardar el resultado. Cada llamada devuelve un valor nuevo.

import java.math.BigDecimal;

public class Main {
    public static void main(String[] args) {
        BigDecimal price = new BigDecimal("19.99");
        BigDecimal tax = new BigDecimal("1.60");
        BigDecimal total = price.add(tax);
        System.out.println(total);
    }
}

Multiplicación

multiply funciona como cabría esperar. Tenga en cuenta que la escala del resultado es la suma de las escalas de los operandos.

import java.math.BigDecimal;

public class Main {
    public static void main(String[] args) {
        BigDecimal unit = new BigDecimal("2.50");
        BigDecimal qty = new BigDecimal("3");
        System.out.println(unit.multiply(qty));
    }
}

La división requiere cuidado

Dividir valores que no dan un resultado exacto, como 1 entre 3, produce un decimal infinito. En ese caso, divide sin más lanza una ArithmeticException.

import java.math.BigDecimal;

public class Main {
    public static void main(String[] args) {
        BigDecimal one = new BigDecimal("1");
        BigDecimal three = new BigDecimal("3");
        try {
            System.out.println(one.divide(three));
        } catch (ArithmeticException e) {
            System.out.println("Need to specify rounding!");
        }
    }
}

División con redondeo

Proporcione una escala y un RoundingMode para dividir de forma segura. Aquí conservamos dos decimales y redondeamos las mitades hacia arriba.

import java.math.BigDecimal;
import java.math.RoundingMode;

public class Main {
    public static void main(String[] args) {
        BigDecimal one = new BigDecimal("1");
        BigDecimal three = new BigDecimal("3");
        System.out.println(one.divide(three, 2, RoundingMode.HALF_UP));
    }
}

Comparar valores

Use compareTo para comparar el valor numérico. No use equals, porque equals tiene en cuenta la escala: 2.0 y 2.00 no son iguales mediante equals, pero sí lo son mediante compareTo.

import java.math.BigDecimal;

public class Main {
    public static void main(String[] args) {
        BigDecimal a = new BigDecimal("2.0");
        BigDecimal b = new BigDecimal("2.00");
        System.out.println(a.equals(b));
        System.out.println(a.compareTo(b) == 0);
    }
}

Constantes prácticas

BigDecimal ofrece constantes ya preparadas: BigDecimal.ZERO, BigDecimal.ONE y BigDecimal.TEN. Úselas en lugar de crear las suyas.

import java.math.BigDecimal;

public class Main {
    public static void main(String[] args) {
        BigDecimal sum = BigDecimal.ZERO;
        sum = sum.add(BigDecimal.TEN);
        System.out.println(sum);
    }
}

Sumar una lista

Un patrón habitual consiste en empezar con BigDecimal.ZERO y sumar cada valor en un bucle, guardando el resultado cada vez.

import java.math.BigDecimal;

public class Main {
    public static void main(String[] args) {
        BigDecimal[] prices = {
            new BigDecimal("1.10"),
            new BigDecimal("2.20"),
            new BigDecimal("3.30")
        };
        BigDecimal total = BigDecimal.ZERO;
        for (BigDecimal p : prices) {
            total = total.add(p);
        }
        System.out.println(total);
    }
}

Buenas prácticas

Recuerde lo esencial: cree los valores a partir de cadenas, trátelos como inmutables, especifique siempre el redondeo en las divisiones y compare con compareTo.

Comprobación rápida

Compruebe sus conocimientos sobre BigDecimal.

Resumen

Ha aprendido a trabajar con BigDecimal:

  • Créelo a partir de una cadena para conservar los dígitos exactos
  • Es inmutable, por lo que debe guardar el resultado de cada operación
  • Use directamente add, subtract y multiply
  • divide necesita una escala y RoundingMode para resultados no terminantes
  • Compare con compareTo, no con equals

Preguntas frecuentes

¿La lección «Uso de BigDecimal» es gratis?

Sí — el texto completo de «Uso de BigDecimal» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Java Academy, actualiza a CoddyKit PRO. El curso de Java Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Uso de BigDecimal»?

Aritmética decimal exacta Practicas Java Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Java Academy?

No se requiere experiencia previa. Java Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.

¿Cuánto tiempo toma la lección «Uso de BigDecimal»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Java Academy?

Sí. Cada lección de Java Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Por qué no usar double para dinero
  2. Uso de BigDecimal
  3. Redondeo y escala
  4. BigInteger para números enormes
← Volver a Java Academy