object转化成float

yellowoneone 2008-09-24 11:27:20

Object fl=123456.1216311;
System.out.println((Float)fl);


报错信息:Exception in thread "main" java.lang.ClassCastException: java.lang.Double
难道fl变成Double的了?请高手解决一下.
...全文
503 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
yellowoneone 2008-09-24
  • 打赏
  • 举报
回复
总的原因是这样:
我要数据库中汇总是用HQL 查询:
hql="xxxxx ,avg(money)xxxxxx"
得到的是一个.List<Object[]> list=dao.find(hql.toString);
我Debug时发现我得到的Ojbect数组是[String,Double]
但是别人写的代码得到的却是[String,Float]
代码写的是一样的呀.我COPY过来,还是出错.郁闷.
同样的数据,同样的代码.难道是我忽略什么了?

数据库也是一样的.有人也遇到过这问题吗?

如果解决不了就用doulbe,我只是很好奇.
daizheng17 2008-09-24
  • 打赏
  • 举报
回复
float a=Float.parseFloat(b.toString());//b为object类型
lip009 2008-09-24
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 yellowoneone 的回复:]
那为什么object转化不成float呢?是因为那个object被JVM默认就是double?
然后从double-->float出错?
[/Quote]
并不是把object默认为double,而是将浮点型常量默认定义为Double类型对象
而你的Object fl=123456.1216311; 相当于Object fl=new Double(123456.1216311);
fl虽然被声明为一个Object对象变量,但它最终引用了Double的一个实例对象
kaneding 2008-09-24
  • 打赏
  • 举报
回复
Object指的是泛类,你用(Float) fl 这样去转换,JAVA肯定会抛出异常,Float是一个类,正确的做法是用Float类下有个静态方法parseFloat()去解析,代码如下:

Object fl=123456.1216311;
System.out.println(Float.parseFloat(fl.toString()));
yellowoneone 2008-09-24
  • 打赏
  • 举报
回复
这个object是从数据库中取出来的.不能在后面加F.有什么别的方法吗?

valueOf,parseFloat会丢失精度的.
lip009 2008-09-24
  • 打赏
  • 举报
回复
系统会将浮点型常量默认为Double类型,所以会出现类型不匹配异常
Object fl=123456.1216311;
System.out.println(Float.parseFloat(fl.toString()));
yellowoneone 2008-09-24
  • 打赏
  • 举报
回复
那为什么object转化不成float呢?是因为那个object被JVM默认就是double?
然后从double-->float出错?
临远 2008-09-24
  • 打赏
  • 举报
回复
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);


62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧