您的位置:首页 > 其它

BigDecimal计费

2016-04-13 20:52 162 查看
BigDecimal 的加减乘除运算、四舍五入法、比较法:

/**

* 提供精确的加法运算

* @param v1 参数1

* @param v2 参数2

* @return 两个参数的和

*/

public static double add(double v1,double v2){

BigDecimal a=new BigDecimal(v1);

BigDecimal b=new BigDecimal(v2);

return a.add(b).doubleValue();

}

/**

* 提供精确的减法运算

* @param v1 参数1

* @param v2 参数2

* @return 两个参数的差

*/

public static double sub(double v1,double v2){

BigDecimal a=new BigDecimal(v1);

BigDecimal b=new BigDecimal(v2);

return a.subtract(b).doubleValue();

}

/**

* 提供精确的乘法运算

* @param v1 参数1

* @param v2 参数2

* @return 两个参数的积

*/

public static double mul(double v1,double v2){

BigDecimal a=new BigDecimal(v1);

BigDecimal b=new BigDecimal(v2);

return a.multiply(b).doubleValue();

}

/**

* 提供精确的除法运算<四舍五入保留有效小数>

* @param v1 参数1

* @param v2 参数2

* @param scale 表示精确到小数点后几位

* @return

*/

public static double div(double v1,double v2,int scale) {

if(scale<0){

throw new IllegalArgumentException("The scale must be a positive integer or zero");

}

BigDecimal a=new BigDecimal(v1);

BigDecimal b=new BigDecimal(v2);

BigDecimal result = a.divide(b, scale,BigDecimal.ROUND_HALF_UP);

return result.doubleValue();

}

/**

* 四舍五入保留有效小数

* @param big

* @param scale 表示精确到小数点后几位

* @return

*/

public static double round(double val,int scale) {

BigDecimal big=new BigDecimal(val);

BigDecimal result = big.divide(new BigDecimal(1),scale,BigDecimal.ROUND_HALF_UP);

return result.doubleValue();

}

/**

* 比较两个数的大小

* @param v1 参数1

* @param v2 参数2

* @return v1>=v2 返回 true(1,0),否则false(-1).

*/

public static boolean compare(double v1,double v2){

BigDecimal a=new BigDecimal(v1);

BigDecimal b=new BigDecimal(v2);

return a.compareTo(b)>=0?true:false;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: