public class MyAccuracyUtils {
//默认精度
private static final int DEF_DIV_SCALE = 10;
/**
* 用于精度加法计算
* @param value1 加法参数1
* @param value2 加法参数2
* @return 返回加法计算值
*/
public static double add(double value1,double value2){
BigDecimal big1 = new BigDecimal(value1);
BigDecimal big2 = new BigDecimal(value2);
return big1.add(big2).doubleValue();
}
/**
*
* @param value1 减法参数1
* @param value2 减法参数2
* @return 返回减法计算的值
*/
public static double sub(double value1,double value2){
BigDecimal big1 = new BigDecimal(value1);
BigDecimal big2 = new BigDecimal(value2);
return big1.subtract(big2).doubleValue();
}
/**
*
* @param value1 乘法因数1
* @param value2 乘法因数2
* @return 返回乘积
*/
public static double mul(double value1,double value2){
BigDecimal big1 = new BigDecimal(value1);
BigDecimal big2 = new BigDecimal(value2);
return big1.multiply(big2).doubleValue();
}
/**
*
* @param value1 除数
* @param value2 被除数
* @return 商
*/
public static double divide(double value1,double value2){
BigDecimal big1 = new BigDecimal(value1);
BigDecimal big2 = new BigDecimal(value2);
if (big1.compareTo(BigDecimal.ZERO) == 0)
{
return BigDecimal.ZERO.doubleValue();
}
return big1.divide(big2, DEF_DIV_SCALE, RoundingMode.HALF_UP).doubleValue();
}
}
使用
//类名.方法 例如加法
double value1 = 11.00;
double value2 = 12.92;
double sub = MyAccuracyUtils.sub(value1, value2);