double類型數據加減運算時,會出現精度缺失。
打個比方
double number1 = 1;
double number2 = 0.2;
double number3 =number1 + number2 ;
理論上number3會等於1.2;但是在實際的操作過程中會出現1.299999999999這種情況,這就是double類型的數據進行計算時出現精度缺失。
解決方法是使用java.math.BigDecimal進行計算。
/**
* 加法運算
* @param number1
* @param number2
* @return
*/
public static double addDouble(double number1 , double number2) {
BigDecimal bigDecimal1 = new BigDecimal(String.valueOf(number1));
BigDecimal bigDecimal2 = new BigDecimal(String.valueOf(number2));
return bigDecimal1.add(bigDecimal2).doubleValue();
}
/**
* 減法運算
* @param number1
* @param number2
* @return
*/
public static double subDouble(double number1, double number2) {
BigDecimal bigDecimal1 = new BigDecimal(String.valueOf(number1));
BigDecimal bigDecimal2 = new BigDecimal(String.valueOf(number2));
return bigDecimal1.subtract(bigDecimal2).doubleValue();
}
/**
* 乘法運算
* @param number1
* @param number2
* @return
*/
public static double mul(double number1, double number2) {
BigDecimal bigDecimal1 = new BigDecimal(String.valueOf(number1));
BigDecimal bigDecimal2 = new BigDecimal(String.valueOf(number2));
return bigDecimal1.multiply(bigDecimal2).doubleValue();
}
/**
* 除法運算
* @param num
* @param total
* @return
*/
public static BigDecimal divide(double num, double total) {
BigDecimal bigDecimal1 = new BigDecimal(String.valueOf(num));
BigDecimal bigDecimal2 = new BigDecimal(String.valueOf(total));
return bigDecimal1.divide(bigDecimal2, 2, BigDecimal.ROUND_HALF_UP);;
}
————————————————
版權聲明:本文為CSDN博主「bzx226948」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/bzx226948/article/details/105840795