2012-10-02 1 views
1

Я хочу, чтобы иметь возможность форматировать двойную цену в конкретном формате. Вы можете достичь этого, используя код ниже:Форматирование валюты в соответствии со специфическими языковыми форматами

NumberFormat.getCurrencyInstance(locale).format(20.0); 

Однако только 21 локалей поддерживаются и мне нужно поддерживать больше, чем эти страны. Будет неплохо иметь возможность форматировать цену с учетом кода страны ISO. Например, учитывая код ISO страны CAN Я хочу форматировать цену до $ 20,00 и т.д.

ли Java имеет поддержку для этого? Если нет, есть версия с открытым исходным кодом (например, время joda для даты), которая может это сделать?

+0

Java поддерживает более 200 локалей, но у него только некоторые из них являются константами. Дополнительная информация в ['Locale'] (http://docs.oracle.com/javase/6/docs/api/java/util/Locale.html) определение класса. Что вы пробовали? –

+0

Как вы получаете экземпляр локали для одного раза без определения констант? – Mayumi

+0

'Locale locale = new Locale (language_code, country_code);' –

ответ

2

Вы можете создать Locale на основе языка и страны, что вам нужно. По умолчанию, Java имеет некоторые из этих языков в качестве констант, но поддерживает более чем 200 стран мира:

Locale locale = new Locale("es", "pe"); //Spanish, Peru 

Подробнее:

+0

Для будущих читателей есть ошибка, характерная для перуанской валюты в предыдущих версиях Java: https://bugs.openjdk.java.net/browse/JDK-7028073 – gian1200

+0

Обратите внимание, что начиная с завтрашнего дня 'S /' будет новым правильный символ. Источник: http://busquedas.elperuano.com.pe/normaslegales/ley-que-cambia-el-nombre-de-la-unidad-monetaria-de-nuevo-sol-ley-n-30381-1322623-1/ – gian1200

+0

@ gian1200 спасибо! Прочитав новый закон в официальной газете Перу, кажется, что старая ошибка больше не будет ошибкой, и ее нужно будет (откат) зафиксировать снова. –