使用西方数字的货币格式

时间:2011-09-23 09:45:43

标签: java android locale currency

我需要能够显示货币属于用户首选区域设置的货币金额,但仅使用西方数字。例如,如果用户选择的货币区域为ar_AE(对于阿拉伯联合酋长国),则金额应显示为

AED 1,234.56

或类似的东西,使用正确的货币名称和小数位数,但使用西方数字。

目前,我正在使用NumberFormat.getCurrencyInstance(locale)使用阿拉伯字形格式化文本。

我有哪些选择?我正在寻找一个通用的解决方案,不需要我具体了解任何给定的货币。

2 个答案:

答案 0 :(得分:3)

如果您想要一个根据英语区域设置编号格式的货币格式化程序,但使用默认区域设置的货币,我会尝试这样的事情:

    NumberFormat nf = NumberFormat.getCurrencyInstance(Locale.ENGLISH);
    nf.setCurrency(Currency.getInstance(Locale.getDefault()));

答案 1 :(得分:1)

您可以像这样使用DecimalFormat

System.out.println(new DecimalFormat( "AED #0.00" , new DecimalFormatSymbols( Locale.ENGLISH)).format( 1.23 ));

编辑:也可以使用货币的语言环境,试试这个:

System.out.println(Currency.getInstance( Locale.GERMANY ).getCurrencyCode() + " " + 
    new DecimalFormat( "#0.00" , new DecimalFormatSymbols( Locale.GERMANY )).format( 1.23 ));

打印:EUR 1,23