需求: 做金额相关的处理, eg: 计算1.0 - 0.7的结果
public static void main(String[] args) {
System.out.println(1.0 - 0.7);
System.out.println(new BigDecimal(1.0).subtract(new BigDecimal(0.7)));
System.out.println(new BigDecimal("1.0").subtract(new BigDecimal("0.7")));
}
运行结果:
0.30000000000000004
0.3000000000000000444089209850062616169452667236328125
0.3
备注: BigDecimal 处理浮点数计算时, 需要将浮点数对象以字符串的形式转为BigDecimal 对象;
需求2: 50除以3, 保留2位小数
public static void main(String[] args) {
System.out.println(50/3);
// System.out.println(new BigDecimal(50).divide(new BigDecimal(3)));//报错
System.out.println(new BigDecimal(50).divide(new BigDecimal(3), 2, BigDecimal.ROUND_HALF_UP));
}
运行结果:
16
16.67
## 备注:
直接用divide()会报错: java.lang.ArithmeticException
此处需要指定保留小数位数(第二个参数--此处为2), BigDecimal.ROUND_HALF_UP设置为四舍五入;
BigDecimal.ROUND_HALF_DOWN等参数用法不做赘述;