studio separar por numberformat moneda miles formato decimales clase java currency

separar - numberformat java



Obtenga el formato de moneda para un paĆ­s que no tiene una constante de Locale (4)

Aquí hay un método de utilidad para tener el símbolo, sea cual sea su ubicación

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); } }

Quiero obtener el formato de moneda de India, por lo que necesito un objeto Locale para India. Pero solo existen unos pocos países que tienen una constante Locale (una static final Locale ), e India no es uno de ellos.

Para obtener los símbolos de moneda para EE. UU. Y Reino Unido, puedo hacer lo siguiente:

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()); }

Que utiliza las constantes Locale.US y Locale.UK . Si quiero obtener el formato de moneda india, ¿qué puedo hacer?


De acuerdo con las notas de la versión de JDK , tiene los códigos de configuración regional hi_IN (Hindi) y en_IN (inglés).

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


Heres es algo simple que puedes hacer,

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

La salida será, Rs.100,000.00.