2011-07-20 34 views
2

我想格式化量:需要的格式爲:### 0,00 例如:299.552.698,05或299.552.698,00的Java格式步數/量

當我嘗試使用

(new DecimalFormat("#.##0,00")).format($F{amount}.doubleValue()) 

導致異常和煥我嘗試使用:

NumberFormat.getCurrencyInstance(Locale.ENGLISH).format($F{amount}.doubleValue()) 

我有我不希望打印的貨幣symbole。

+2

,如果你告訴我們是什麼拋出異常可能有幫助。 – jpm

+1

看起來不像Java ... $ F {??? –

+0

$ F因爲我在iReport中編寫代碼。 IllegaLArgumentexception是個例外。爲:「#。## 0,00」。 – Med

回答

0

嗯,我會使用的DecimalFormatSymbols類欺騙格式化,像這樣:

public String formatNumber(double value) { 
    DecimalFormat formatter = new DecimalFormat("###,###.00"); 
    DecimalFormatSymbols symbols = new DecimalFormatSymbols(Locale.getDefault()); 
    symbols.setDecimalSeparator(','); 
    symbols.setGroupingSeparator('.'); 
    formatter.setDecimalFormatSymbols(symbols); 
    return formatter.format(value); 
} 

希望它爲你工作...

+0

我只能寫一行代碼:在iReport中。 – Med

+0

您可以將日期格式化數量變量發送到您的報告。格式可以由服務器完成。 – revo

0

也許是這樣的:

DecimalFormatSymbols symbols = new DecimalFormatSymbols(Locale.ENGLISH); 
return (new DecimalFormat("#.##0,00", symbols)).format($F{amount}.doubleValue()); 

查看DecimalFormat的兩個參數構造函數

3

"#.##0,00"是無效的格式字符串。

,逗號和只有逗號,是分組字符,但它是局部,這意味着如果你設置了語言環境,你會得到適當的分隔符爲您的區域。

如果你喜歡「一行黑客」的方式,這將工作:

new DecimalFormat("#,##0.00").format($F{amount}.doubleValue()).replace(",", "x").replace(".", ",").replace("x", ".");