parent
c989748ec5
commit
6802161647
4 changed files with 148 additions and 25 deletions
@ -0,0 +1,76 @@ |
|||||||
|
package org.jeecg.common.util; |
||||||
|
|
||||||
|
import java.math.BigDecimal; |
||||||
|
|
||||||
|
public class ComputeUtils { |
||||||
|
|
||||||
|
//默认除法运算精度
|
||||||
|
private static final int DEF_DIV_SCALE = 10; |
||||||
|
|
||||||
|
//构造器私有化,让这个类不能实例化
|
||||||
|
private ComputeUtils() { |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
*提供精确的加法运算 |
||||||
|
* @param v1 |
||||||
|
* @param v2 |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
public static double add(double v1, double v2) { |
||||||
|
BigDecimal b1 = BigDecimal.valueOf(v1); |
||||||
|
BigDecimal b2 = BigDecimal.valueOf(v2); |
||||||
|
return b1.add(b2).doubleValue(); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
*精确的减法运算 |
||||||
|
* @param v1 |
||||||
|
* @param v2 |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
public static double sub(double v1, double v2) { |
||||||
|
BigDecimal b1 = BigDecimal.valueOf(v1); |
||||||
|
BigDecimal b2 = BigDecimal.valueOf(v2); |
||||||
|
return b1.subtract(b2).doubleValue(); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 精确的乘法运算 |
||||||
|
* @param v1 |
||||||
|
* @param v2 |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
public static double mul(double v1, double v2) { |
||||||
|
BigDecimal b1 = BigDecimal.valueOf(v1); |
||||||
|
BigDecimal b2 = BigDecimal.valueOf(v2); |
||||||
|
return b1.multiply(b2).doubleValue(); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
//提供(相对)精确的除法运算,当发生除不尽的情况时
|
||||||
|
//精确到小数点后10位的数字四舍五入
|
||||||
|
* @param v1 分子 |
||||||
|
* @param v2 分母 |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
public static double div(double v1, double v2) { |
||||||
|
BigDecimal b1 = BigDecimal.valueOf(v1); |
||||||
|
BigDecimal b2 = BigDecimal.valueOf(v2); |
||||||
|
return b1.divide(b2, DEF_DIV_SCALE, BigDecimal.ROUND_HALF_UP).doubleValue(); |
||||||
|
} |
||||||
|
|
||||||
|
public static double div2(double v1, double v2) { |
||||||
|
BigDecimal b1 = BigDecimal.valueOf(v1); |
||||||
|
BigDecimal b2 = BigDecimal.valueOf(v2); |
||||||
|
return b1.divide(b2, 2, BigDecimal.ROUND_HALF_UP).doubleValue(); |
||||||
|
} |
||||||
|
|
||||||
|
public static void main(String[] args) { |
||||||
|
// System.out.println("args = " + div(39,64));
|
||||||
|
System.out.println("args2 = " + div2(39,64)); |
||||||
|
|
||||||
|
System.out.println("args = " + mul(div2(39,64),new Double(2))); |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue