Подтвердить что ты не робот

Код валюты для отображения символа валюты

Добрый день, в базе данных есть таблица с домами для продажи записей. Для каждой домашней записи есть код валюты (в формате ISO 4217). Возможно ли каким-то образом получить символ валюты из этого кода, чтобы я мог использовать его на стороне презентации?

Спасибо.

P.S. Старалась разрешить эту проблему, установив объект Currency (созданный Currency.getInstance(currencyCode)) в метод DecimalNumberFormat setCurrency, а затем изменив значение, которое мне нужно было отобразить, но форматированное значение все еще без символа валюты.

4b9b3361

Ответ 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