[英]BigDecimal division
I'm trying to use BigDecimal to calculate the GST tax rate. 我正在尝试使用BigDecimal来计算GST税率。
The tax calculation is supposed to be 1/11 * item price. 税收计算应为1/11 *项目价格。
So I thought I should probably use the BigDecimal to give the most accurate representation. 所以我认为我应该使用BigDecimal来给出最准确的表示。 But for some reason the rate is always calculated to zero.
但是由于某种原因,费率总是计算为零。
this is what I've tried: 这是我尝试过的:
BigDecimal TAX_RATE = new BigDecimal("1")
.divide(new BigDecimal("11"), BigDecimal.ROUND_HALF_UP);
BigDecimal bd = new BigDecimal("10").multiply(TAX_RATE);
// gives 0
Does anyone know why? 有人知道为什么吗?
Try 尝试
BigDecimal TAX_RATE = new BigDecimal("1").divide(new BigDecimal("11"), 500, BigDecimal.ROUND_HALF_UP);
Second argument specifies precision. 第二个参数指定精度。 It's zero by default, so you end up rounding everything to an int.
默认情况下为零,因此最终将所有内容四舍五入为一个整型。
In your case TAX_RATE equals 0 because of BigDecimal.ROUND_HALF_UP
. 在您的情况下,由于
BigDecimal.ROUND_HALF_UP
TAX_RATE等于0。 See http://docs.oracle.com/javase/7/docs/api/java/math/BigDecimal.html#ROUND_HALF_UP 参见http://docs.oracle.com/javase/7/docs/api/java/math/BigDecimal.html#ROUND_HALF_UP
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.