Получите формат валюты для страны, которая не имеет Локали постоянной

Я хочу получить формат валюты Индии, таким образом, мне нужен a Locale объект для Индии. Но там существует только немногие страны, которые имеют a Locale постоянный (a static final Locale), и Индия не является одним из них.

Для получения обозначений денежной единицы для США и Великобритании я могу сделать следующее:

public void displayCurrencySymbols() {

    Currency currency = Currency.getInstance(Locale.US);
    System.out.println("United States: " + currency.getSymbol());

    currency = Currency.getInstance(Locale.UK);
    System.out.println("United Kingdom: " + currency.getSymbol());

}

Это использует константы Locale.US и Locale.UK. Если я хочу получить индийский формат валюты, что я могу сделать?

24
задан Raedwald 30 August 2013 в 12:24
поделиться

3 ответа

Согласно примечания к выпуску JDK , у вас есть коды локали hi_IN (хинди) и en_IN (английский).

System.out.println(Currency.getInstance(new Locale("hi", "IN")).getSymbol());
28
ответ дан 28 November 2019 в 23:20
поделиться

Посмотрите это руководство: https://docs.oracle.com/javase/1.5.0/docs/guide/intl/locale.doc.html и там есть hi_IN для хинди, Индия

0
ответ дан 28 November 2019 в 23:20
поделиться

Вот метод утилиты, чтобы иметь символ, независимо от вашей локали

    public class Utils {

        public static SortedMap<Currency, Locale> currencyLocaleMap;

        static {
            currencyLocaleMap = new TreeMap<Currency, Locale>(new Comparator<Currency>() {
                @Override
                public int compare(Currency c1, Currency c2) {
                    return c1.getCurrencyCode().compareTo(c2.getCurrencyCode());
                }
            });

            for (Locale locale : Locale.getAvailableLocales()) {
                try {
                    Currency currency = Currency.getInstance(locale);
                    currencyLocaleMap.put(currency, locale);
                }
                catch (Exception e) {
                }
            }
        }


        public static String getCurrencySymbol(String currencyCode) {
            Currency currency = Currency.getInstance(currencyCode);
            return currency.getSymbol(currencyLocaleMap.get(currency));
        }

       public static String  getAmountAsFormattedString(Double amount, Double decimals, String currencyCode) {
            Currency currency = Currency.getInstance(currencyCode);
            double doubleBalance = 0.00;
            if (amount != null) {
                doubleBalance = ((Double) amount) / (Math.pow(10.0, decimals));
            }
            NumberFormat numberFormat = NumberFormat.getCurrencyInstance(currencyLocaleMap.get(currency));
            return numberFormat.format(doubleBalance);
    }


    }
1
ответ дан 28 November 2019 в 23:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: