Код валюты для отображения символа валюты
Добрый день,
в базе данных есть таблица с домами для продажи записей. Для каждой домашней записи есть код валюты (в формате ISO 4217). Возможно ли каким-то образом получить символ валюты из этого кода, чтобы я мог использовать его на стороне презентации?
Спасибо.
P.S. Старалась разрешить эту проблему, установив объект Currency (созданный Currency.getInstance(currencyCode)) в метод DecimalNumberFormat setCurrency, а затем изменив значение, которое мне нужно было отобразить, но форматированное значение все еще без символа валюты.
Ответы
Ответ 1
Вы можете использовать Currency
объект getSymbol метод.
Какой символ используется, зависит от используемого Locale
См. this и this.
Обновление, январь 2016:
Ссылки теперь мертвы. Но они были специфичны для Java 1.4/5, поэтому они больше не актуальны. Более подробную информацию о форматировании валют можно найти в https://docs.oracle.com/javase/tutorial/i18n/format/numberFormat.html. Однако ссылки можно найти в WayBackEngine.
Ответ 2
@artjomka
Я смог реплицировать вашу проблему, установив свой язык по умолчанию в Latvia
Locale.setDefault(new Locale("lv","LV"));
Currency c = Currency.getInstance("EUR");
System.out.println(c.getSymbol());
Это дало мне результат "EUR".
Однако, оставив настройку моей локали на Uk (уже мой по умолчанию), я получаю sympbol для евро.
Locale.setDefault(Locale.UK);
Currency c = Currency.getInstance("EUR");
System.out.println(c.getSymbol());
Ответ 3
Вы можете использовать класс Currency и DecimalFormat для достижения вашего требования.
В следующем примере # представляет число и ¤ представляет символ валюты, вы можете найти соответствующие параметры формата в java API doc для DecimalFormat class.
Currency currency = Currency.getInstance("USD");
DecimalFormat decimalFormat = new DecimalFormat("#¤");
decimalFormat.setCurrency(currency);
System.out.println(decimalFormat.format(234));
Ответ 4
Вы должны вызвать Currency.getSymbol(Locale)
, а не Currency.getSymbol()
(без объекта локали). Настройка локали по умолчанию дает вам поведение, которое вы хотите.
Ответ 5
Никогда не слепо добавлять символы валюты (который предполагает, что append является подходящей по языку позицией символа валюты). I18n-небезопасная практика. То же самое со строкой "# ¤" (для локалей с символом валюты префикса это неверно)
Ответ 6
В fooobar.com/info/261052/...
имеется фрагмент кода.
Но будьте осторожны:
- Одна валюта может иметь несколько символов. Например: USD имеет также символ "US $" для локального "es_US" (по крайней мере, на Java8, Win7 на моей виртуальной машине).
- Валюта разницы может иметь одинаковые символы, например: USD, AUD