Java BigDecimal工具类,计算double数据防止精度丢失
package m.system.util;
import java.math.BigDecimal;
public class BigDecimalUtil {
/**
* double类型精确相加 v1+v2
* @param v1
* @param v2
* @return
*/
public static double add(double v1, double v2) {
BigDecimal b1 = new BigDecimal(v1);
BigDecimal b2 = new BigDecimal(v2);
BigDecimal b3=new BigDecimal(""+b1.add(b2).doubleValue()).setScale(2, BigDecimal.ROUND_HALF_UP);
return b3.doubleValue();
}
/**
* double类型精确相减 v1-v2
* @param v1
* @param v2
* @return
*/
public static double subtract(double v1, double v2) {
BigDecimal b1 = new BigDecimal(v1);
BigDecimal b2 = new BigDecimal(v2);
BigDecimal b3=new BigDecimal(""+b1.subtract(b2).doubleValue()).setScale(2, BigDecimal.ROUND_HALF_UP);
return b3.doubleValue();
}
/**
* double类型精确相乘 v1*v2
* @param v1
* @param v2
* @return
*/
public static double multiply(double v1, double v2) {
BigDecimal b1 = new BigDecimal(v1);
BigDecimal b2 = new BigDecimal(v2);
BigDecimal b3=new BigDecimal(""+b1.multiply(b2).doubleValue()).setScale(2, BigDecimal.ROUND_HALF_UP);
return b3.doubleValue();
}
/**
* double类型精确相除 v1/v2
* @param v1
* @param v2
* @return
*/
public static double divide(double v1, double v2) {
BigDecimal b1 = new BigDecimal(v1);
BigDecimal b2 = new BigDecimal(v2);
BigDecimal b3=new BigDecimal(""+b1.divide(b2).doubleValue()).setScale(2, BigDecimal.ROUND_HALF_UP);
return b3.doubleValue();
}
}