【问题标题】:Multiplying and Dividing with BigDecimal and integer - Java用 BigDecimal 和整数进行乘除 - Java
【发布时间】:2019-08-21 12:26:40
【问题描述】:

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

【问题讨论】:

    标签: java integer bigdecimal calculation


    【解决方案1】:

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

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

    所以只要照你的做,将 Integer 转换为 BigDecimal,而不是相反,以确保不会发生任何不好的事情。

    您可以查看link,它有很多关于 Java 中 BigDecimal 和 BigInteger 的信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-13
      • 1970-01-01
      • 2010-11-21
      • 2014-01-14
      • 2017-05-23
      • 1970-01-01
      相关资源
      最近更新 更多