Junior — Middle
¿En qué se diferencian las clases BigDecimal y Double en Java y en qué casos es preferible usar cada una de ellas?
sobes.tech AI
Respuesta de la IA
La clase Double en Java representa un tipo primitivo de punto flotante de doble precisión (64 bits). Es útil para realizar operaciones aritméticas rápidas con números de punto flotante, pero debido a las características de la representación binaria, no siempre almacena con precisión decimales, lo que puede llevar a errores de redondeo.
BigDecimal es una clase para trabajar con números decimales de precisión arbitraria. Almacena los números en forma de cadena o matriz de dígitos, lo que evita errores de redondeo y garantiza precisión en cálculos financieros y otros críticos.
Cuándo usar:
- Use Double cuando la velocidad sea importante y se toleren pequeños errores (por ejemplo, en cálculos científicos, gráficos).
- Use BigDecimal para cálculos financieros, donde la precisión y el redondeo correcto son cruciales (por ejemplo, al trabajar con dinero).
Ejemplo con BigDecimal:
import java.math.BigDecimal;
BigDecimal price = new BigDecimal("19.99");
BigDecimal quantity = new BigDecimal("3");
BigDecimal total = price.multiply(quantity);
System.out.println("Total: " + total); // Total: 59.97
Ejemplo con Double:
double price = 19.99;
double quantity = 3;
double total = price * quantity;
System.out.println("Total: " + total); // Puede ser 59.96999999999999