java - 用 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
解决方案
您应该始终使用 BigDecimal 函数对整数值进行操作。整数可以表示为 BigDecimal 但并不总是相反,例如,如果尝试将 BigDecimal 转换为整数,如下所示:
myBigDecimal.intValueExact() 如果您丢失信息,它将引发异常。
所以就像你正在做的那样,将 Integer 转换为 BigDecimal 而不是相反,以确保不会发生任何不好的事情。
你可以查看这个链接,它有很多关于 Java 中 BigDecimal 和 BigInteger 的信息。
推荐阅读
- apache-kafka - java中自动重启Kafka Stream
- r - 生成过滤后的 SHINY 网页的 HTML 链接
- java - Docker:Springboot 容器无法连接到 PostgreSql 容器
- mulesoft - 结合骡子表达语言和文字
- r - 在 R 中动态创建和评估函数
- python - 在数据框上执行聚合函数时丢失标签列
- jquery - 如何使用 jQuery ajax 检索数据
- jquery - 单击时调整背景颜色
- python - 使用 Selenium 上传和处理 MaterializeCSS 表单中的文件
- typescript - 并非所有 Braintree HostedFields 方法都可用于打字稿?