public class TestClass { public static void main(String[] args) {

 float a=5.60f;
 double b=a;
System.out.println(b);

}}
为什么输出的结果是:5.599999904632568

解决方案 »

  1.   

    就是好.我以前也类似的问题,现在还没有搞定
    就是在一个字符串转为float的时候,这样出样999这种情况
    不知道哪位高手讲讲!为什么?
      

  2.   

    浮点数精度问题。
    原因可以找一本讲计算机组成原理的书来看看。至于如何解决这个具体的问题,可以借助于java.text.DecimalFormat类。
    详查Java Doc吧。
      

  3.   

    float:的有效数值是6~7位;
    double:的有效数值是16~17位。float转换为double有精度补位。或许吧!
      

  4.   

    “5.599999904632568”和“5.60”之间的误差<0.0000001,6位有效数字的精度已经满足了。
    注意,“N位精度”并不是指“一定有N位完全相同”比如,对于参考值1.0来说,值0.99跟值1.02的误差是哪个大?虽然后者跟原值有两位数字完全一样,而前者没有,但显然前者更精确。
      

  5.   

    呵呵··解决用java.text.DecimalFormat 强精度
      

  6.   

    今天试了下你的代码。可没有出现你说的情况。
    郁闷哦。
    steedhorse(晨星) 说的也是有道理的。
    但结果没有误差啊 。兄弟你再看看是不是别的问题。
    并且希望大家指教。