现在的位置: 首页 > 综合 > 正文

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

2018年05月22日 ⁄ 综合 ⁄ 共 782字 ⁄ 字号 评论关闭

今天在做一个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;
  }

这样就不会丢失什么精度问题了,^_^ 问题解决

抱歉!评论已关闭.