首页 > 解决方案 > 用 BigDecimal 和整数进行乘除 - Java

问题描述

这是用整数计算 BigDecimal 的最佳方法吗?它按原样工作,但我正在考虑最佳实践,我是否应该处理可能的异常。

    Integer salary = 120000;
    BigDecimal incomeRate = BigDecimal.valueOf(30.5).setScale(2, RoundingMode.HALF_UP);

    //Formula: salary * incomeRate/100
    BigDecimal taxableAmount = incomeRate.multiply(BigDecimal.valueOf(salary)).divide(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP);
    System.out.println("Income: " + salary);
    System.out.println("Payable Tax: " + taxableAmount);

结果:收入:120000 应纳税额:36600.00

标签: javaintegerbigdecimalcalculation

解决方案


您应该始终使用 BigDecimal 函数对整数值进行操作。整数可以表示为 BigDecimal 但并不总是相反,例如,如果尝试将 BigDecimal 转换为整数,如下所示:

myBigDecimal.intValueExact() 如果您丢失信息,它将引发异常。

所以就像你正在做的那样,将 Integer 转换为 BigDecimal 而不是相反,以确保不会发生任何不好的事情。

你可以查看这个链接,它有很多关于 Java 中 BigDecimal 和 BigInteger 的信息。


推荐阅读