目录
3. 使用 ROUND_UP & ROUND_DOWN 小心有坑
6. 四舍五入之 ROUND_HALF_UP & ROUND_HALF_DOWN
Java 中在处理金额相关的计算, 基本上都会使用 BigDecimal 类型。BigDecimal 解决了小数精度问题, 避免了浮点数运算产生的一些误差。 本文主要讲述 BigDecimal 一些常用的用法, 也增加了一些 Oracle 中对精度的处理, 供对比学习。
1. 基本的加减乘除
BigDecimal data1 = new BigDecimal("1");
BigDecimal data2 = new BigDecimal("2");
BigDecimal data3 = new BigDecimal("3");
System.out.println("1 + 2 = " + data1.add(data2));
System.out.println("1 - 2 = " + data1.subtract(data2));
System.out.println("1 x 2 = " + data1.multiply(data2));
System.out.println("1 / 2 = " + data1.divide(data2));
执行结果:
2. 除法除不尽可能报错
- 解决方法: 养成做完运算指定保留小数位的好习惯;
// 避免除不尽, 需要指定保留小数位数
System.out.println("1 / 3 = " + data1.divide(data3, 6, BigDecimal.ROUND_CEILING) + " (无条件进位)");
System.out.println("1 / 3 = " + data1.divide(data3, 6, BigDecimal.ROUND_FLOOR) + " (无条件舍弃)");
执行结果
3. 使用 ROUND_UP & ROUND_DOWN 小心有坑
- ROUND_UP & RO