2016-06-20 77 views
-1

我嘗試做一些計算來獲得稅收價值。這項工作,但它顯示了很多數字。bigdecimal和十進制數

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它的計算,它計算到18.0000

price().add(tvq).add(tps) 

共有232.0000

我想14.0000 TPS 14.00,18.00和232.00

+0

我沒有看到任何打印數字的代碼。添加該代碼。 –

+0

我使用的是itext,我使用toPlainString()來顯示大數字。 –

+0

這可能是一個更好的欺騙:[BigDecimal規模不工作](http://stackoverflow.com/a/28216527) – Tom

回答

2

像String這樣的BigDecimal是不可變的。這意味着你不能改變這個值,只返回一個新的值。

tvq.setScale(2, BigDecimal.ROUND_UP); 

這會計算一個帶有兩位小數的BigDecimal,但是您將放棄它。我懷疑你想保留返回的價值。

tvq = tvq.setScale(2, BigDecimal.ROUND_UP); 
相關問題