JAVA技巧(java中float運算的精度問題)

字號:

一個float減法的時候出了點問題,找了半天,原來是關(guān)于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 或許結(jié)果會得出0.399999,可能結(jié)果不是這個,記得不太清楚了,考試大提示但會丟失精度,解決方法如下
    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;
    }