BigDecimal和整数相乘和除法-Java

时间:2019-03-30 23:12:12

标签: java integer bigdecimal calculation

这是用整数计算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

1 个答案:

答案 0 :(得分:0)

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

  

myBigDecimal.intValueExact()会在您丢失信息时引发异常。

所以只要照做,然后将Integer转换为BigDecimal,就可以确保不会发生任何不良情况。

您可以检查此link,其中包含有关Java中BigDecimal和BigInteger的大量信息。