Форматирование валюты с использованием западных цифр - PullRequest
0 голосов
/ 23 сентября 2011

Мне нужно иметь возможность отображать суммы в валюте, где валюта соответствует предпочтительной локали пользователя, но с использованием только западных цифр. Например, если выбранный пользователем язык для валюты равен ar_AE (для Объединенных Арабских Эмиратов), тогда сумма должна отображаться как

AED 1,234.56

или что-то подобное, используя правильное название валюты и количество десятичных знаков, но используя западные цифры.

В настоящее время я использую NumberFormat.getCurrencyInstance(locale), который форматирует текст с использованием арабских глифов.

Какие варианты у меня есть? Я ищу общее решение, которое не потребует от меня определенных знаний о какой-либо валюте.

Ответы [ 2 ]

3 голосов
/ 23 сентября 2011

Если вы хотите использовать средство форматирования валюты с форматированием чисел в соответствии с английской локалью, но с использованием валюты локали по умолчанию, я бы попробовал что-то вроде этого:

    NumberFormat nf = NumberFormat.getCurrencyInstance(Locale.ENGLISH);
    nf.setCurrency(Currency.getInstance(Locale.getDefault()));
1 голос
/ 23 сентября 2011

Вы можете использовать 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

...