java中两个double类型的两位小数相加为什么会变成有很多小数位的小数?

现象:

Double d1=904163.08;

Double d2=210298.99;

// 结果是:1114462.0699999998

Double totalmoney1=d1+d2; 

修改后:

BigDecimal b1 = new BigDecimal(Double.toString(904163.08));
BigDecimal b2 = new BigDecimal(Double.toString(210298.99));
//结果1114462.07
System.out.println(b1.add(b2).doubleValue());

java中两个double类型的两位小数相加为什么会变成有很多小数位的小数?