我正在尝试使用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
有谁知道为什么?
答案 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