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.
Mire esta guía: https://docs.oracle.com/javase/1.5.0/docs/guide/intl/locale.doc.html y hay hi_IN
para Hindi, India