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

C

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.

 

About the author

Ramiro de la Vega

Bienvenido a Pharos.sh

Soy Ramiro de la Vega, Estadounidense con raíces Españolas. Empecé a programar hace casi 20 años cuando era muy jovencito.

Espero que en mi web encuentres la inspiración y ayuda que necesitas para adentrarte en el fantástico mundo de la programación y conseguir tus objetivos por difíciles que sean.

Add comment

Sobre mi

Últimos Post

Etiquetas

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con tus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, aceptas el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad