Duvida Com BigDecimal

2 respostas
jonasjgs2

qual a diferença entre b1 e b2?

double b = 1.25

BigDecimal b1 = new BigDecimal("" + b);
BigDecimal b2 = new BigDecimal(b);

2 Respostas

A

Um usa o construtor de string e outro o de double. Se vc fizer b1== b2 dá falso já que são objetos diferentes apontando para referências diferentes;

pmlm

A questão não seria essa. Vão dar false da mesma forma com dois construtores String ou dois construtores Double.
A diferença é no próprio construtor. Tal como o double não é um valor exato, usar o construtor que recebe double para um BigDecimal vai herdar esse “erro” e em vez de 2.5, podes ter 2.49999999999999999 ou 2.500000000001
Por outro lado, se usares o construtor com String, tens a garantia de que o valor criado em BigDecimal é exatamente 2.5.

Criado 17 de novembro de 2015
Ultima resposta 18 de nov. de 2015
Respostas 2
Participantes 3