“Novo BigDecimal (13.3D)” resulta em imprecisos “13.3000000000000007105 ..”?

Como é que o JavaBigDecimal pode ser tão doloroso?

Double d = 13.3D;

BigDecimal bd1 = new BigDecimal(d);
BigDecimal bd2 = new BigDecimal(String.valueOf(d));


System.out.println("RESULT 1: "+bd1.toString());
System.out.println("RESULT 2: "+bd2.toString());

RESULT 1: 13.300000000000000710542735760100185871124267578125
RESULT 2: 13.3

Existe alguma situação em que o resultado 1 seria desejado? Eu sei que o Java 1.5 mudou otoString() método, mas essa foi a conseqüência pretendida?

Também percebo queBigDecimal temdoubleValue() etc, mas a biblioteca com a qual estou trabalhando utiliza umtoString() e não posso mudar isso :-(

Felicidades.

questionAnswers(5)

yourAnswerToTheQuestion