Java · Intermediário · Inglês · Técnico
BigDecimal
Número decimal de precisão arbitrária e imutável, usado para dinheiro. Evita os erros de arredondamento de float e double.
Onde usar
Surge em cálculos financeiros: 'nunca use double para valor monetário'. A divisão exige informar a escala e o RoundingMode.
Em código
var a = new BigDecimal("10.00");
var b = new BigDecimal("3");
var c = a.divide(b, 2, RoundingMode.HALF_UP);
System.out.println(c); // 3.33
System.out.println(a.compareTo(b) > 0);Exemplos
Never use double for money, use BigDecimal.
Nunca use double para dinheiro, use BigDecimal.
Build the BigDecimal from a String, not from a double.
Construa o BigDecimal a partir de uma String, não de um double.
Cuidado
Crie sempre a partir de String: new BigDecimal(0.1) carrega o erro binário do double. E equals considera a escala: 2.0 e 2.00 não são iguais.