java取mysql中的float类型数值,显示与数据库中不一样

noskywater100 2011-10-21 10:04:25
struts2+hibernate+spring 框架做一个订单系统,当用数据库中的订单来结算时发现系统的用户剩余金额老是会不对,跟踪一些天发现系统有时候取订单金额时,取出来的数值与数据库中的数据不一样,如:昨天我发现一个订单的金额是2055但是他取出来显示却是2038差了17啊!!!真要命,我没有遇到过这种问题,不知道哪位大哥可以指点一下!
取订单方法:
public List getOrdersListInfo(String orderno,int sendState)
{
return this.getHibernateTemplate().find("from Orders as os where (os.orderno='"+orderno+"' or os.ule_orderid='"+orderno+"') and os.sendstate='"+sendState+"'");
}

处理订单的方法:
for(int i=0;i<list.size();i++){
Orders os = (Orders) list.get(i);
String strTime = simpleDateFormat.format(new Date());
SysUser su = businessDao.getOneUser(os.getSysUser().getId()); //查找用户的预占金额
float endProphecymoney = su.getProphecymoney()-os.getOrdermoney(); //用户预占金额减去该笔订单的钱
float endUsermoney = su.getUsermoney()-os.getOrdermoney(); //用户可用金额减去货品金额
float endUsercredit = Float.parseFloat(su.getUsercredit())+os.getOrdermoney(); /
businessDao.updateSysUserMoney(endProphecymoney,endUsermoney,endUsercredit,os.getOrdermoney(),su.getId()); //更新客户预占金额、可用金额、累计货品金额、上次够买金额
String log = "订单号为"+order_id+"的订单扣款成功!扣除商品金额为"+os.getOrdermoney()”;

}
就是蓝色那个订单金额不对,2055 取出操作却变成2038
...全文
491 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
升帆独航 2013-12-19
  • 打赏
  • 举报
回复
对于这种金额最好不要用float类型,最好用整型,然后在程序里换算
hesaiisme 2013-12-19
  • 打赏
  • 举报
回复
楼主请问解决了吗?
hellostory 2011-11-14
  • 打赏
  • 举报
回复
现在也遇到同样的问题,关注!

51,409

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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