¿Cómo obtener el símbolo de moneda por nombre de moneda?

3 minutos de lectura

avatar de usuario
Me llamo

Quiero obtener el símbolo de moneda (como ps o £) por nombre de moneda (como Dólar estadounidense o EUR).

Para inglés (EE. UU.) puedo obtener el símbolo (si el inglés (EE. UU.) está configurado como idioma en el dispositivo):

Currency currency = Currency.getInstance(Locale.getDefault());
String symbol = currency.getSymbol()); // $

¿Cómo puedo obtener el símbolo de la moneda por nombre de moneda usando las herramientas de Android?

someMethod (String currCode) { // currCode - USD, EUR, UAH
    return currSymbol;       // $...
}

  • tenga en cuenta que el símbolo de la moneda no siempre se coloca antes del valor del dinero en otros idiomas, por lo que es mejor formatear el valor de la moneda

    – phuclv

    28 de marzo de 2016 a las 10:37


avatar de usuario
Kristiyan Varbanov

Puedes probar algunos como este:

public class MainActivity extends AppCompatActivity {


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Utils.getCurrencySymbol(Currency.getInstance(Locale.US).getCurrencyCode());
        Utils.getCurrencySymbol(Currency.getInstance(Locale.JAPAN).getCurrencyCode());
        Utils.getCurrencySymbol(Currency.getInstance(Locale.UK).getCurrencyCode());

        //for your case that you want to get Euro symbol because France are with Euro symnol    
        Utils.getCurrencySymbol(Currency.getInstance(Locale.FRANCE).getCurrencyCode());
        //you can get symbol also if you write string of your desired currency
        Utils.getCurrencySymbol("INR");


    }


    static class Utils {
        public static SortedMap<Currency, Locale> currencyLocaleMap;

        static {
            currencyLocaleMap = new TreeMap<Currency, Locale>(new Comparator<Currency>() {
                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);
            System.out.println(currencyCode + ":-" + currency.getSymbol(currencyLocaleMap.get(currency)));
            return currency.getSymbol(currencyLocaleMap.get(currency));
        }

    }
}

  • @Shevchenko Arthem, puede probar mi actualización, tal vez esta sea una mejor solución para su caso.

    – Kristiyan Varbanov

    28 de marzo de 2016 a las 8:33

  • Moneda.getInstance(moneda).getSymbol(Locale.getDefault())

    – Raghu KrishnanR

    6 sep 2019 a las 10:01

avatar de usuario
dev.bmax

El símbolo de moneda depende de la ubicación. El mismo signo $ significa diferentes monedas en EE. UU. y Australia. Entonces, para obtener el símbolo correcto, debe proporcionar la instancia de Locale. De lo contrario, se aplicará una configuración regional predeterminada, lo que dará como resultado diferentes valores para diferentes dispositivos.

    Locale uk = new Locale("en", "GB");
    Currency pound = Currency.getInstance("GBP");
    pound.getSymbol(uk);

Esto funciona para mí.

Currency currency = Currency.getInstance("GBP");
String symbol = currency.getSymbol();

Creo que java.util.currency es la clase que necesita, llame a getSymbol para obtener el símbolo del nombre de la moneda

http://developer.android.com/reference/java/util/Currency.html

Resolví este problema para crear un Mapa que tiene la clave es el código de moneda y el valor es el símbolo.

public final Map<String, String> CURRENCIES= new HashMap<String, String>(){
        {
            put("EUR","€");
            put("USD","$");
            ...
        }
}; 

Luego, puede obtener el símbolo usando Locale, así.

Currency currency = Currency.getInstance(Locale.getDefault());
String symbol = CURRENCIES.get(currency.getCurrencyCode());

Simplemente puede usar este código para obtener el símbolo de moneda y diferentes formatos de moneda. Aquí la variable “curr” tomará el valor de entrada del usuario. Y luego convertirlo a diferentes formatos de moneda junto con sus símbolos. En esto he explicado 4 formato de moneda. De esta forma, también puede utilizar el formato para otros países.

import java.util.*;
import java.text.*;

public class CurrencyConvertor{
    
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        double curr = scanner.nextDouble();
        scanner.close();
        if(curr>=0 && curr<=1000000000){
 NumberFormat france = NumberFormat.getCurrencyInstance(Locale.FRANCE);
NumberFormat us = NumberFormat.getCurrencyInstance(Locale.US);
NumberFormat china = NumberFormat.getCurrencyInstance(Locale.CHINA);
        NumberFormat india = NumberFormat.getCurrencyInstance(Locale.ENGLISH);
        
        

System.out.println("France: " + france.format(curr));
 System.out.println("US: " + us.format(curr));
         System.out.println("India: "+NumberFormat.getCurrencyInstance(new Locale("en","IN")).format(curr)); 
         System.out.println("China: "+ china.format(curr));
        
        }
    }
}






¿Ha sido útil esta solución?