详细的解答,等待楼下给出,
以前没有注意过这个细节,刚才特意翻翻了《Effictive Java》,
没有找到答案,只是在第十九条中看到这样一段话,供各位参考:
float 和 double 类型的主要设计目标是为了科学计算和工程计算。他们执行的是二进制浮点运算,这是为了在广域数值范围提供较为精确的快速近似计算而专心设计的。然而,它们没有提供完全精确的结果,所以不应该被用于要求精确结果的场合。

解决方案 »

  1.   

    double是双精度所以比float的精度要大
    那个9是四舍五入得来的
    如果要使输出的小数点位数保留几位待用
    Format 格式化
      

  2.   

    b=1.23456792E8    //这是怎么回事?
    四舍五入为什么不是
    b=1.23456789E8
      

  3.   

    我认为a=1.2345678912345679E8 是四舍五入来的,
     b=1.23456789E8 因为你把double转化为float后是窄型转化,数据有丢失。
      

  4.   

    把double转化为float后是窄型转化,数据有丢失,也是正常的呀