您的位置:首页 > 编程语言 > Java开发

关于java中float运算的精度问题

2008-11-01 01:26 423 查看
今天在做一个float减法的时候出了点问题,找了半天,原来是关于flloat精度的问题

问题描述如下:

public float getLeftMoney() throws Exception {
// TODO Auto-generated method stub
float m = new MoneyDaoImpl().CountAllMoney();
float c = new DetailsDaoImpl().countDetailsMoney();
flaot less = m-c;
System.out.println(m);
System.out.println(c);
System.out.println(less);
return less;
}
加入m=4.4 c=3.0 或许结果会得出0.399999,可能结果不是这个,记得不太清楚了,但会丢失精度,解决方法如下

public float getLeftMoney() throws Exception {
// TODO Auto-generated method stub
float m = new MoneyDaoImpl().CountAllMoney();
float c = new DetailsDaoImpl().countDetailsMoney();
BigDecimal b1 = new BigDecimal(Float.toString(m));
BigDecimal b2 = new BigDecimal(Float.toString(c));
System.out.println(m);
System.out.println(c);
Float less = b1.subtract(b2).floatValue();
System.out.println(less);
return less;
}
这样就不会丢失什么精度问题了,^_^ 问题解决
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: