0Pricing
Java Academy · Lección

Redondeo y escala

Controle la precisión y los modos de redondeo

Redondeo y escala es una lección gratuita de Java Academy en CoddyKit. Esta es la lección 3 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.

Escala y precisión

Cada BigDecimal tiene una escala, es decir, el número de dígitos situados a la derecha del separador decimal. El valor 12.340 tiene una escala de 3. Controlar la escala permite mostrar el dinero con exactamente dos decimales.

Consultar la escala

Llame a scale() para ver cuántas posiciones decimales contiene un valor y a precision() para consultar el número total de dígitos significativos.

import java.math.BigDecimal;

public class Main {
    public static void main(String[] args) {
        BigDecimal v = new BigDecimal("12.340");
        System.out.println(v.scale());
        System.out.println(v.precision());
    }
}

setScale para fijar los decimales

setScale obliga a que un valor tenga un número determinado de posiciones decimales. Debe pasar un RoundingMode si es necesario redondear.

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

public class Main {
    public static void main(String[] args) {
        BigDecimal v = new BigDecimal("12.3456");
        System.out.println(v.setScale(2, RoundingMode.HALF_UP));
    }
}

HALF_UP, el modo habitual

RoundingMode.HALF_UP redondea al valor más cercano y, en caso de empate, se aleja de cero. Es el redondeo cotidiano que se aprende en la escuela.

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

public class Main {
    public static void main(String[] args) {
        System.out.println(new BigDecimal("2.5").setScale(0, RoundingMode.HALF_UP));
        System.out.println(new BigDecimal("3.5").setScale(0, RoundingMode.HALF_UP));
    }
}

HALF_EVEN, el redondeo bancario

HALF_EVEN redondea los empates hacia el dígito par más cercano. Esto reduce el sesgo en muchos redondeos, por lo que los bancos lo prefieren.

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

public class Main {
    public static void main(String[] args) {
        System.out.println(new BigDecimal("2.5").setScale(0, RoundingMode.HALF_EVEN));
        System.out.println(new BigDecimal("3.5").setScale(0, RoundingMode.HALF_EVEN));
    }
}

CEILING y FLOOR

CEILING siempre redondea hacia el infinito positivo y FLOOR siempre hacia el infinito negativo, independientemente del dígito que se descarte.

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

public class Main {
    public static void main(String[] args) {
        BigDecimal v = new BigDecimal("2.1");
        System.out.println(v.setScale(0, RoundingMode.CEILING));
        System.out.println(v.setScale(0, RoundingMode.FLOOR));
    }
}

DOWN y UP

DOWN trunca hacia cero, mientras que UP siempre redondea alejándose de cero. DOWN es un truncamiento sencillo.

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

public class Main {
    public static void main(String[] args) {
        BigDecimal v = new BigDecimal("2.9");
        System.out.println(v.setScale(0, RoundingMode.DOWN));
        System.out.println(v.setScale(0, RoundingMode.UP));
    }
}

Redondear durante la división

La división puede producir decimales infinitos, por lo que debe proporcionar la escala y el modo de redondeo directamente en la llamada a divide.

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

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

Eliminar los ceros finales

stripTrailingZeros elimina los ceros sobrantes. Combínelo con toPlainString para evitar la notación científica en la salida.

import java.math.BigDecimal;

public class Main {
    public static void main(String[] args) {
        BigDecimal v = new BigDecimal("12.300");
        System.out.println(v.stripTrailingZeros().toPlainString());
    }
}

Dar formato al dinero

Para mostrar los valores, establezca la escala en 2 con HALF_UP para que los precios siempre muestren dos decimales, incluso cuando sean cantidades enteras.

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

public class Main {
    public static void main(String[] args) {
        BigDecimal amount = new BigDecimal("7");
        System.out.println(amount.setScale(2, RoundingMode.HALF_UP));
    }
}

Elegir un modo

Elija HALF_UP para el redondeo habitual destinado a los usuarios y HALF_EVEN en contabilidad para reducir el sesgo acumulado. Especifique siempre un modo para que el código nunca lance una excepción con resultados no terminantes.

Comprobación rápida

Compruebe sus conocimientos sobre la escala y el redondeo.

Resumen

Ha aprendido a controlar la precisión:

  • La escala es el número de dígitos posteriores al separador decimal
  • setScale fija los decimales y requiere un RoundingMode
  • HALF_UP es el redondeo cotidiano y HALF_EVEN es el redondeo bancario
  • CEILING, FLOOR, UP y DOWN cubren el redondeo direccional
  • Especifique siempre un modo en las divisiones para evitar excepciones

Preguntas frecuentes

¿La lección «Redondeo y escala» es gratis?

Sí — el texto completo de «Redondeo y escala» 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 «Redondeo y escala»?

Controle la precisión y los modos de redondeo 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 3 de 4.

¿Cuánto tiempo toma la lección «Redondeo y escala»?

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