BigDecimal的正确使用方式
1、精度丢失问题2、正确的初始化方式3、正确的使用方式
1、精度丢失问题
1.由于浮点型变量在计算时会出现丢失精度的问题,所以需要用钱的地方要用BigDecimal
2.BigDecimal b
= new BigDecimal(1.0),这种初始化方式还是会发生精度丢失问题
2、正确的初始化方式
BigDecimal b1
= new BigDecimal("0.1");
BigDecimal b2
= BigDecimal
.valueOf(0.1);
3、正确的使用方式
publicclass BigDecimalUtil
{
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
);
}
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
);
}
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
);
}
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
);
}
}