2012-12-11 99 views
0

在舍入值以顯示在textView中遇到了很多麻煩。舍入貨幣的雙精度值

我基本上想將它舍入到小數點後兩位,但此刻我得到了不同數字的長尾。

我玩弄的BigDecimal但至今沒有運氣...

public void calc() { 
     BigDecimal bd = new BigDecimal(subTotal); 
     bd.setScale(2, BigDecimal.ROUND_DOWN); 
     total.setText(String.valueOf(bd)); 
    } 
+0

不要使用浮點值來表示貨幣!請參閱http://stackoverflow.com/questions/3730019/why-not-use-double-or-float-to-represent-currency –

回答

1

試試下面的代碼:

double roundTwoDecimals(double d) { 
    DecimalFormat twoDForm = new DecimalFormat("#.##"); 
    return Double.valueOf(twoDForm.format(d)); 
} 
+0

這種工作,但當我一直加入我最終得到了尾隨零..任何想法? – Javacadabra

+0

也許你應該在顯示之前將其格式化! – Pavlos

0

繼爲我工作

BigDecimal bd = new BigDecimal(subTotal); 
bd = bd.setScale(2, BigDecimal.ROUND_HALF_UP); 
total.setText(String.valueOf(bd)); 
// Input: 9.888888 -> Output: 9.89 
// Input: 9f -> Output: 9.00