针对 BigDecimal.multiply 运算,结果的小数位数(scale)由两个操作数的小数位数之和决定。我们具体分析一下 3.3 * 3.333 这个例子。
📐 精确结果与 Scale 规则
3.3 的小数位数是 1 位(scale=1),3.333 的小数位数是 3 位(scale=3)。因此,两个数相乘后,结果的小数位数是 1 + 3 = 4 位。
java
import java.math.BigDecimal; public class Test { public static void main(String[] args) { BigDecimal a = new BigDecimal("3.3"); BigDecimal b = new BigDecimal("3.333"); BigDecimal result = a.multiply(b); System.out.println("原始结果: " + result); // 输出 10.9989 System.out.println("小数位数: " + result.scale()); // 输出 4 } }执行结果:
text
原始结果: 10.9989 小数位数: 4
可以看到,结果 10.9989 正是保留了 4 位小数。
⚙️ 如何控制最终小数位数?
在实际业务中,你往往需要将结果保留为固定的小数位数(如 2 位),这就需要配合 setScale 方法来处理。
java</