BigDecimal分裂

时间:2014-12-13 02:17:25

标签: java bigdecimal

我正在尝试使用BigDecimal来计算商品及服务税税率。

税收计算应该是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

有谁知道为什么?

2 个答案:

答案 0 :(得分:1)

尝试

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

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

答案 1 :(得分:0)

在您的情况下,由于BigDecimal.ROUND_HALF_UP,TAX_RATE等于0。见http://docs.oracle.com/javase/7/docs/api/java/math/BigDecimal.html#ROUND_HALF_UP