test1:
test2:
test3:
所以在很要求精度的应用中,一定要用BigDecimal的String构造器
而一般数据库存储的都是double类型,所以就可以写一个BigDecimal的工具类,方便转换
public class BigDecimalUtil {
private BigDecimalUtil(){
}
public static BigDecimal add(double d1, double d2){
BigDecimal b1 = new BigDecimal(Double.toString(d1));
BigDecimal b2 = new BigDecimal(Double.toString(d2));
return b1.add(b2);
}
public static BigDecimal sub(double d1, double d2){
BigDecimal b1 = new BigDecimal(Double.toString(d1));
BigDecimal b2 = new BigDecimal(Double.toString(d2));
return b1.subtract(b2);
}
public static BigDecimal mul(double d1, double d2){
BigDecimal b1 = new BigDecimal(Double.toString(d1));
BigDecimal b2 = new BigDecimal(Double.toString(d2));
return b1.multiply(b2);
}
//要注意除不尽的情况
public static BigDecimal div(double d1, double d2){
BigDecimal b1 = new BigDecimal(Double.toString(d1));
BigDecimal b2 = new BigDecimal(Double.toString(d2));
//保留两位小数,四舍五入
return b1.divide(b2, 2, BigDecimal.ROUND_HALF_UP);
}
}