在 Java 中使用 BigDecimal 了解数学运算

Understand mathematical operations using BigDecimal in Java

使用 Java(JDK 1.8.0_66 和 JDK 1.8.0_181)及其内置的 BigDecimal class 而执行以下操作:

    BigDecimal res = new BigDecimal("290");
    BigDecimal sub = new BigDecimal("22");
    sub = sub.subtract(new BigDecimal("7"));
    sub = sub.subtract(new BigDecimal("4"));
    res = res.divide(new BigDecimal("22"), 2, RoundingMode.HALF_EVEN);
    res = res.multiply(sub);
    res = res.setScale(2, RoundingMode.HALF_EVEN);

产生的结果是 144.98,而预期是 145。

为什么会这样?我试过本地和在线编译器。 设置规模是否为时已晚?我怎样才能得到更准确的计算?

此公式用于表示货币价值计算。

正确答案是 144.98。您将 290/22 计算为两位小数的精度。结果是 13.18。而 13.18*11 是 144.98

如果您的计算结果是 "if I were to pay 5 in 11 equal installments, how big should the installments be",则您必须取 2 美分的差额并将其添加到分期付款中。