获取没有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.US
和Locale.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