Sobes.tech
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