bigdecimal和小数

时间:2016-06-20 00:14:49

标签: java

我尝试做一些计算以获得税收价值。这项工作,但它显示了很多。

 Price it's a BigDecimal     

 BigDecimal tps = price().multiply(tpsRate());
 tps.setScale(2, BigDecimal.ROUND_UP);

 BigDecimal tvq = price().multiply(tvqRate());
 tvq.setScale(2, BigDecimal.ROUND_UP);

 BigDecimal tps = report.getPrice().multiply(report.getTpsRate());
 tps.setScale(2, BigDecimal.ROUND_UP);

 BigDecimal tvq = report.getPrice().multiply(report.getTvqRate());
 tvq.setScale(2, BigDecimal.ROUND_UP);

如果价格是200.00 tvq它计算到14.0000 tps计算到18.0000

price().add(tvq).add(tps)
总共232.0000

我想得到14.00,18.00和232.00

1 个答案:

答案 0 :(得分:2)

BigDecimal和String一样,是不可变的。这意味着您无法更改值,只返回新值。

tvq.setScale(2, BigDecimal.ROUND_UP);

这会计算一个带有两个小数位的BigDecimal,但是您要丢弃它。我怀疑你想保留返回的值。

tvq = tvq.setScale(2, BigDecimal.ROUND_UP);