double d=35.2+3.2;
float fl=35.2f+3.2f;
System.out.println(d);
System.out.println(fl);
这段代码为什么结果是
38.400000000000006
38.4

解决方案 »

  1.   

    这是由于在计算机内部并不能精确地表示0.4而产生的误差,这是IEEE754浮点数规范规定的。如果在精度要求很高的领域,比如:金融、科学计算等方面,不应该使用浮点数来进行计算,在
    Java中要精确地进行小数运算的话可以采用BigDecimal类。
      

  2.   

    哦 我知道了。那为什么float型得可以正确计算它的小数位是怎么存储的?它和double的表示有什么区别呢?