????java?????????????????????????????2????? java??BigDecimal??????.
???????磺
????System.out.println(0.9+0.3); ???1.2
????System.out.println(1.9+0.3); ???2.1999999999999997
????System.out.println(1.9+0.4); ???2.3
????java?????float????double???????????????????BigDecimal??
??????????£?
public static BigDecimal getBigDecimal(Double val){
//??double?????BigDecimal
return new BigDecimal(val);
}
public static BigDecimal getBigDecimal(int val){
//??int?????BigDecimal
return new BigDecimal(val);
}
public static BigDecimal getBigDecimal(String val){
//??String?????BigDecimal
return new BigDecimal(val);
}
//?м??????
public static double add(double d1??double d2){
BigDecimal b1=getBigDecimal(d1);
BigDecimal b2=getBigDecimal(d2);
return b1.add(b2).doubleValue();
}
//???????????????
public static double round(double d??int len){
BigDecimal b1=getBigDecimal(d);
BigDecimal b2=getBigDecimal(1);
return b1.divide(b2??len??BigDecimal.ROUND_HALF_UP).doubleValue();
}
?????????????
????System.out.println(1.9+0.3); ????2.1999999999999997
????System.out.println(round(add(1.9??0.3)??2)); ????2.2
??????????????????????????硣