//BigDecimal小数格式化及四则运算
public class BigDecimalUtil {
// 默认除法运算精度
private static final int DEF_DIV_SCALE = 10;
// 构造器私有,让这个类不能实例化
private BigDecimalUtil() {
}
// 提供精确的加法运算
public static double add(double v1,double v2) {
java.math.BigDecimal b1 = java.math.BigDecimal.valueOf(v1);
java.math.BigDecimal b2 = java.math.BigDecimal.valueOf(v2);
return b1.add(b2).doubleValue();
}
// 提供精确的减法运算
public static double substract(double v1,double v2) {
java.math.BigDecimal b1 = java.math.BigDecimal.valueOf(v1);
java.math.BigDecimal b2 = java.math.BigDecimal.valueOf(v2);
return b1.subtract(b2).doubleValue();
}
// 提供精确的乘法运算
public static double multiply(double v1,double v2) {
java.math.BigDecimal b1 = java.math.BigDecimal.valueOf(v1);
java.math.BigDecimal b2 = java.math.BigDecimal.valueOf(v2);
return b1.multiply(b2).doubleValue();
}
// 提供精确的除法运算
public static double divide(double v1,double v2) {
java.math.BigDecimal b1 = java.math.BigDecimal.valueOf(v1);
java.math.BigDecimal b2 = java.math.BigDecimal.valueOf(v2);
return b1.divide(b2,3).doubleValue();
}
/**
* @desc 1.0~1之间的BigDecimal小数,格式化后失去前面的0,则前面直接加上0。
* 2.传入的参数等于0,则直接返回字符串"0.00"
* 3.大于1的小数,直接格式化返回字符串
* obj传入的小数
* @param
* @return
*/
public static String formatToNumber(java.math.BigDecimal obj) {
DecimalFormat df = new DecimalFormat("#.00");
if(obj.compareTo(java.math.BigDecimal.ZERO)==0) {
return "0.00";
}else if(obj.compareTo(java.math.BigDecimal.ZERO)>0&&obj.compareTo(new java.math.BigDecimal(1))<0){
return "0"+df.format(obj).toString();
}else {
return df.format(obj).toString();
}
}
}