钱币计算为什么使用BigDecimal

货币计算为什么使用BigDecimal
double d = 29.0 * 0.01;
System.out.println(d);
System.out.println(d * 100);
System.out.println((int) (d * 100));

  输出:
0.29
28.999999999999996
28


float f = (float) (29.45*0.01);
System.out.println(f);
System.out.println(f * 100);
System.out.println((int) (f * 100));

  输出:
0.2945
29.449999
29