java - 大十进制除法

标签 java bigdecimal

我正在尝试使用 BigDecimal 来计算 GST 税率。

税费计算应为 1/11 * 商品价格。

所以我想我应该使用 BigDecimal 来给出最准确的表示。但由于某种原因,费率总是计算为零。

这是我尝试过的:

BigDecimal TAX_RATE = new BigDecimal("1")
    .divide(new BigDecimal("11"), BigDecimal.ROUND_HALF_UP);
BigDecimal bd = new BigDecimal("10").multiply(TAX_RATE);
// gives 0

有谁知道为什么吗?

最佳答案

尝试

BigDecimal TAX_RATE = new BigDecimal("1").divide(new BigDecimal("11"), 500, BigDecimal.ROUND_HALF_UP);

第二个参数指定精度。默认情况下它为零,因此您最终将所有内容四舍五入为整数。

关于java - 大十进制除法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27454846/

相关文章:

java - 我正在尝试在 java 中使用和学习关键字 "this"。在我的代码中出现错误

java - 将函数添加到 BigDecimal 变量

java - 设置 BigDecimal 的特定精度

java - 无法读取 java getter 方法中的 BigDecimal 属性

java - 为什么某些 Java 包装类的名称与其原始类型不同?

java - 使用 Scanner 来标记文件

java - Base64 编码基本身份验证 header Apache HTTP 客户端

java - 捕获异常时无限循环

java - 舍入 BigDecimal 以匹配 C++ sprintf

java - 提高 BigDecimal 到双转换的性能