Object fl=123456.1216311;
System.out.println((Float)fl);
报错信息:Exception in thread "main" java.lang.ClassCastException: java.lang.Double
难道fl变成Double的了?请高手解决一下.

解决方案 »

  1.   

    Object fl=123456.1216311F;
    System.out.println((Float)fl);或者
    Object fl=123456.1216311f;
    System.out.println((Float)fl);或者
    Object fl=123456.1216311;
    System.out.println((Double)fl);
      

  2.   

    那为什么object转化不成float呢?是因为那个object被JVM默认就是double?
    然后从double-->float出错?
      

  3.   

    系统会将浮点型常量默认为Double类型,所以会出现类型不匹配异常
    Object fl=123456.1216311;
    System.out.println(Float.parseFloat(fl.toString()));
      

  4.   

    这个object是从数据库中取出来的.不能在后面加F.有什么别的方法吗?valueOf,parseFloat会丢失精度的.
      

  5.   

    Object指的是泛类,你用(Float) fl 这样去转换,JAVA肯定会抛出异常,Float是一个类,正确的做法是用Float类下有个静态方法parseFloat()去解析,代码如下:Object fl=123456.1216311;
    System.out.println(Float.parseFloat(fl.toString()));
      

  6.   

    并不是把object默认为double,而是将浮点型常量默认定义为Double类型对象
    而你的Object fl=123456.1216311; 相当于Object fl=new Double(123456.1216311);
    fl虽然被声明为一个Object对象变量,但它最终引用了Double的一个实例对象
      

  7.   

    float a=Float.parseFloat(b.toString());//b为object类型
      

  8.   

    总的原因是这样:
    我要数据库中汇总是用HQL 查询:
    hql="xxxxx ,avg(money)xxxxxx"
    得到的是一个.List<Object[]> list=dao.find(hql.toString);
    我Debug时发现我得到的Ojbect数组是[String,Double]
    但是别人写的代码得到的却是[String,Float]
    代码写的是一样的呀.我COPY过来,还是出错.郁闷.
    同样的数据,同样的代码.难道是我忽略什么了?数据库也是一样的.有人也遇到过这问题吗?如果解决不了就用doulbe,我只是很好奇.