Cómo formatear el número como cadena de moneda en Java

    Introducción

    La moneda es una parte muy importante de nuestro mundo moderno. Por lo tanto, es igualmente importante para nosotros poder expresarlo correctamente en Java.

    En este tutorial, veremos cómo formatear números como cadenas de moneda en Java.

    Número de formato como cadena de moneda

    A continuación, le mostramos cómo puede formatear fácilmente un número, como un double en una cadena de moneda:

    double currencyAmount = 1500.00;
    // Create a new Locale
    Locale usa = new Locale("en", "US");
    // Create a Currency instance for the Locale
    Currency dollars = Currency.getInstance(usa);
    // Create a formatter given the Locale
    NumberFormat dollarFormat = NumberFormat.getCurrencyInstance(usa);
    
    // Format the Number into a Currency String
    System.out.println(dollars.getDisplayName() + ": " + dollarFormat.format(currencyAmount));
    

    Si ejecutamos este código, resultará en:

    US Dollar: $1,500.00
    

    Formatear números en diferentes monedas implica algunas clases de Java. Nuestro ejemplo hizo uso de la Locale y Currency clases de la java.util paquete. Además, usamos el NumberFormat clase, que se puede encontrar en la java.text paquete.

    Profundicemos en estas clases y escribamos un método que formatee nuestro número en múltiples monedas, dependiendo de una entrada.

    La clase local

    Cada Locale El objeto expresa una región geopolítica e incluye información como el idioma y la ubicación. Los países tienen formas únicas de expresar moneda. En lugar de tener que formatear manualmente cada moneda de forma diferente, utilizando Locale Los objetos nos permiten automatizar este proceso.

    Para crear un nuevo Locale object, podemos usar uno de los tres constructores disponibles:

    Locale(String language);
    Locale(String language, String country);
    Locale(String language, String country, String variant);
    

    Sin embargo, tenga en cuenta que String los parámetros de los constructores no pueden ser arbitrarios. Puede encontrar una lista completa de todas las configuraciones regionales admitidas en Java 8 aquí.

    Ahora creemos un ejemplo Locale objetos. Haremos referencia a estos más adelante cuando estemos creando el método real para imprimir moneda:

    Locale usa = new Locale("en", "US");
    Locale germany = new Locale("de", "DE");
    Locale japan = new Locale("jp", "JP");
    

    Dado que estamos trabajando con moneda, la primera String El parámetro, idioma, dictará el formato del valor de la moneda (ej. 1,000,000.00 o 1,000,000,00). El segundo String parámetro, región, determinará qué signo de moneda se utiliza (por ejemplo, $ o ¥).

    La clase de moneda

    La segunda clase que debemos comprender es la Currency clase. Cada Currency El objeto representa una moneda mundial. Queremos obtener una moneda dada nuestra Locale, entonces usaremos el siguiente método:

    Currency.getInstance(Locale locale);
    

    Esto devolverá el correspondiente Currency instancia para el especificado Locale parámetro. Entonces, usando el Locale objetos que creamos anteriormente, esto es lo que haremos:

    Currency dollars = Currency.getInstance(usa);
    Currency euros = Currency.getInstance(germany);
    Currency yen = Currency.getInstance(japan);
    

    Ahora que hemos creado nuestros tres Currency instancias, podemos pasar a nuestra siguiente clase.

    La clase NumberFormat

    los NumberFormat La clase tiene métodos para formatear números basados ​​en configuraciones regionales. Los países tienen diferentes formas de agrupar números. Por ejemplo, mil se pueden representar como “1000”, “1000”, “1000” y otras variaciones.

    Usaremos el NumberFormat.getCurrencyInstance(Locale l) método. Este método devuelve un NumberFormat objeto que corresponde al Locale parámetro especificado. Así es como lo usaremos en nuestro método:

    NumberFormat dollarFormat = NumberFormat.getCurrencyInstance(usa);
    NumberFormat eurosFormat = NumberFormat.getCurrencyInstance(germany);
    NumberFormat yenFormat = NumberFormat.getCurrencyInstance(japan);
    

    Creación de un método para imprimir un número como moneda

    Ahora que hemos aprendido sobre las tres clases necesarias para este programa, podemos comenzar a escribir el método real para imprimir un double con formato de moneda.

    También aceptaremos una Cadena, especificando en qué moneda nos gustaría imprimirla:

    public static void printCurrency(double currencyAmount, String outputCurrency) {
        Locale locale;
    		
        if (outputCurrency.equals("Yen")) {
    	    locale = new Locale("jp", "JP");
    	} else if(outputCurrency.equals("Euros")) {
            locale = new Locale("de", "DE");
    	} else if (outputCurrency.equals("Dollars")) {
            locale = new Locale("en", "US");
        } else {
            locale = new Locale("en", "US");
        }
    	    
    	Currency currency = Currency.getInstance(locale);
    	NumberFormat numberFormat = NumberFormat.getCurrencyInstance(locale);
    	
    	System.out.println(currency.getDisplayName() + ": " + numberFormat.format(currencyAmount)); 
    
    	}
    }
    

    Probemos este método llamándolo y pasando los argumentos apropiados:

    printCurrency(1000000.00, "Yen");
    printCurrency(1000000.00, "Dollars");
    printCurrency(1000000.00, "Euros");
    

    Esto resulta en:

    Japanese Yen: JPY 1,000,000
    US Dollar: $1,000,000.00
    Euro: 1.000.000,00 €
    

    Para este ejemplo, usamos un double e impreso como moneda con el formato adecuado. Otros tipos de números también funcionarían, pero recomendamos seguir con double para valores de moneda.

    Conclusión

    En este artículo, aprendimos un poco sobre Locale, Currencyy NumberFormat clases. Luego aplicamos este conocimiento en un método que nos permitió formatear e imprimir correctamente un double como moneda.

     

    Etiquetas:

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *