Junior — Middle
Qual é a diferença entre as classes BigDecimal e Double em Java e em que casos é mais adequado usar cada uma delas?
sobes.tech IA
Resposta da IA
A classe Double em Java representa um tipo primitivo de ponto flutuante de dupla precisão (64 bits). É útil para realizar operações aritméticas rápidas com números de ponto flutuante, mas devido às características da representação binária, nem sempre armazena com precisão decimais, o que pode levar a erros de arredondamento.
BigDecimal é uma classe para trabalhar com números decimais de precisão arbitrária. Ela armazena os números como uma string ou matriz de dígitos, evitando erros de arredondamento e garantindo precisão em cálculos financeiros e outros críticos.
Quando usar:
- Use Double quando a velocidade for importante e pequenas imprecisões forem aceitáveis (por exemplo, em cálculos científicos, gráficos).
- Use BigDecimal para cálculos financeiros, onde a precisão e o arredondamento correto são essenciais (por exemplo, ao trabalhar com dinheiro).
Exemplo com 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
Exemplo com Double:
double price = 19.99;
double quantity = 3;
double total = price * quantity;
System.out.println("Total: " + total); // Pode ser 59.96999999999999