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

Как я могу узнать символ денежной единицы (ака второстепенной единицы) в Java?

Currency.getSymbol предоставит мне главный символ (например, "$" за доллар США), но я хотел бы получить второстепенную единицу (например, "p" для GBP или символ центов за доллар США), не написав мой собственный взгляд.

Есть ли стандарт, т.е. встроенный способ сделать это?

4b9b3361

Ответ 1

Я хотел бы предложить для этой ситуации использовать пользовательский custom currency format. Используйте DecimalFormat или NumberFormat пакета java.text.*. Для этого есть много примеров.

Пример

public class CurrencyFormatExample {
    public void currencyFormat(Locale currentLocale) {
        Double currency = new Double(9843.21);
        NumberFormat currencyFormatter;
        String currencyOut;
        currencyFormatter = NumberFormat.getCurrencyInstance(currentLocale);
        currencyOut = currencyFormatter.format(currency);
        System.out.println(currencyOut + " " + currentLocale.toString());
    }

    public static void main(String args[]) {
        Locale[] locales = new Locale[]{new Locale("fr", "FR"),
            new Locale("de", "DE"), new Locale("ca", "CA"),
            new Locale("rs", "RS"),new Locale("en", "IN")
        };
        CurrencyFormatExample[] formate = new CurrencyFormatExample[locales.length];
        for (int i = 0; i < locales.length; i++) {
            formate[i].currencyFormat(locales[i]);
        }
    }
}

Вывод:

9Â 843,21 â?¬ fr_FR

9.843,21 â?¬ de_DE

CAD 9.843,21 ca_CA

RSD 9,843.21 rs_RS

Rs.9,843.21 en_IN

Ссылка здесь:

Обновление для небольшой валюты

  Locale locale = Locale.UK;
  Currency curr = Currency.getInstance(locale);

  // get and print the symbol of the currency
  String symbol = curr.getSymbol(locale);
  System.out.println("Symbol is = " + symbol);

Выход:

Symbol is = £