"Nuevo BigDecimal (13.3D)" da como resultado impreciso "13.3000000000000007105 .."?

¿Cómo es que JavaBigDecimal puede ser tan 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

¿Hay alguna situación en la que se desearía el Resultado 1? Sé que Java 1.5 cambió eltoString() método, pero ¿fue esta la consecuencia prevista?

También me doy cuenta de queBigDecimal tienedoubleValue() etc., pero la biblioteca con la que estoy trabajando utiliza útilmente untoString() y no puedo cambiar eso :-(

Salud.

Respuestas a la pregunta(5)

Su respuesta a la pregunta