我需要能够显示货币属于用户首选区域设置的货币金额,但仅使用西方数字。例如,如果用户选择的货币区域为ar_AE
(对于阿拉伯联合酋长国),则金额应显示为
AED 1,234.56
或类似的东西,使用正确的货币名称和小数位数,但使用西方数字。
目前,我正在使用NumberFormat.getCurrencyInstance(locale)
使用阿拉伯字形格式化文本。
我有哪些选择?我正在寻找一个通用的解决方案,不需要我具体了解任何给定的货币。
答案 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