涉及到加减乘除,用int,double会出现数据丢失,这个时候用BigDicimal可以解决这个问题。
适用场景:计算商品总价的时候。
注意:new BigDicimal(Double.toString(v1)),里面需要传字符串,不然不可行。
import java.math.BigDecimal;
public class BigDecimalUtil {
/**
* 求和
*
* @param v1 参数
* @param v2 参数
* @return 计算结果
*/
public static BigDecimal add(double v1, double v2) {
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.add(b2);
}
/**
* 求差
*
* @param v1 参数
* @param v2 参数
* @return 计算结果
*/
public static BigDecimal sub(double v1, double v2) {
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.subtract(b2);
}
/**
* 求乘积
*
* @param v1 参数
* @param v2 参数
* @return 计算结果
*/
public static BigDecimal mul(double v1, double v2) {
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.multiply(b2);
}
/**
* 求商
*
* @param v1 参数
* @param v2 参数
* @return 计算结果
*/
public static BigDecimal div(double v1, double v2) {
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
//四舍五入,保留两位小数,在除不尽的情况
return b1.divide(b2, 2, BigDecimal.ROUND_HALF_UP);
}
}