获取没有Locale常量的国家/地区的货币格式

我想获得印度的货币格式,所以我需要一个印度的Locale对象。 但是只存在少数具有Locale常量( 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.USLocale.UK 。 如果我想获得印度货币格式,我该怎么办?

根据JDK发行说明 ,您有区域代码hi_IN (印地语)和en_IN (英语)。

 System.out.println(Currency.getInstance(new Locale("hi", "IN")).getSymbol()); 

inheritance人是你能做的简单事情,

  float amount = 100000; NumberFormat formatter = NumberFormat.getCurrencyInstance(new Locale("en", "IN")); String moneyString = formatter.format(amount); System.out.println(moneyString); 

输出将是,Rs.100,000.00。

这是一个实用的方法来获得符号,无论你的语言环境如何

  public class Utils { public static SortedMap currencyLocaleMap; static { currencyLocaleMap = new TreeMap(new Comparator() { @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); } } 

看看这个指南: https : hi_IN并且有印度,印度的hi_IN