在Play Framework(或Java)中,如何将BigDecimal格式化为不带符号的货币?

在Play Framework(或Java)中,如何将BigDecimal格式化为不带符号的货币?,java,playframework,currency-formatting,Java,Playframework,Currency Formatting,我想在一个区域设置中将BigDecimal格式化为货币,但使用另一个区域设置的货币符号。在这种情况下,它是一个瑞典用户,但金额是欧元 我希望你能给我一个更好的方法: public String getFormattedAmount() { Locale.setDefault(new Locale(currentUser.getLocale())); NumberFormat nf = NumberFormat.getCurrencyInstance(); DecimalF

我想在一个区域设置中将BigDecimal格式化为货币,但使用另一个区域设置的货币符号。在这种情况下,它是一个瑞典用户,但金额是欧元

我希望你能给我一个更好的方法:

public String getFormattedAmount()
{
    Locale.setDefault(new Locale(currentUser.getLocale()));
    NumberFormat nf = NumberFormat.getCurrencyInstance();
    DecimalFormatSymbols decimalFormatSymbols = ((DecimalFormat) nf).getDecimalFormatSymbols();
    decimalFormatSymbols.setCurrencySymbol("");
    ((DecimalFormat) nf).setDecimalFormatSymbols(decimalFormatSymbols);
    return nf.format(amount).trim();
}

播放2.2。

您可以尝试此解决方案,灵感来自:


这无法处理货币分隔符。您使用的是什么语言环境?请给我举个例子。也许我误解了你的问题,但是使用新的Localesv,SE和你我的代码格式化123456789,00,我总是得到123456789,00。正确吗?对于十进制值来说是正确的,但是对于货币金额来说应该是123.456.789,00。你比我更了解瑞典货币格式,但是代码DecimalFormat.getCurrencyInstancenew Localesv,SE.format123456789产生123 456 789,00 kr。对于Java,小数点分隔符是一个空格而不是一个点。亲爱的投票人,类似的问题与游戏框架无关。Play以前的模板语言有${42.formatCurrency'EUR.raw},但我在当前的模板语言中似乎找不到类似的东西。我想即使我找不到它,它也可能还在那里。
DecimalFormat nf = (DecimalFormat) DecimalFormat.getNumberInstance(new Locale(currentUser.getLocale()));
nf.setMinimumFractionDigits(2);
nf.setMaximumFractionDigits(2);
String formattedValue = nf.format(amout);