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;
}
/**
* 提供精确的加法运算
* @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;
}
相关文章推荐
- 团队计划会议-01
- 转:mybatis3中@SelectProvider的使用技巧
- Error MSB6006: “mt.exe”已退出,代码为 31
- 关于取模和取余的区别。
- android socket基于mina框架实现和服务器长连接
- IOS学习之[深入浅出Cocoa]iOS网络编程之Socket
- NYOJ-23 取石子(一)
- 虚幻4 渲染线程主循环
- atitit.解决net.sf.json.JSONException There is a cycle in the hierarchy
- 三角形5
- Eclipse中使用Ant打Android包报错及解决方案
- 用SurfaceView实现Android游戏摇杆
- 面试题之二维数组中的查找
- SVM
- monkey源代码分析之事件注入方法变化
- 异常
- 第六周作业----单元测试
- Stay hungry, Stay foolish 的原义
- 吝啬的国度
- WEB前端学习笔记 一