Convertir a formato moneda (euros/céntimos) en Java
Vamos a mostrar como formatear un número cualquiera al formato moneda, más concretamente a euros (x,xx €). Veamos un ejemplo:
import java.text.NumberFormat;;
public class Principal {
public static void main(String[] args) {
double euros = 0.4556456;
NumberFormat formatter = NumberFormat.getCurrencyInstance();
System.out.println(formatter.format(euros));
}
}
La salida será:
0,46 €
Cuando llamamos a NumberFormat.getCurrencyInstance(); lo que se hace es crear el formateador en función del objeto Locale que está utilizando Java. Al estar en España, nos lo muestra en euros. ¿Pero qué pasa si queremos mostrarlo por ejemplo en dólares americanos?. Debemos definir el objeto Locale correspondiente a Estados Unidos, como se muestra a continuación:
import java.text.NumberFormat;
import java.util.Locale;
public class Principal {
public static void main(String[] args) {
double dolares = 0.4556456;
Locale usa = new Locale("us", "US");
NumberFormat formatter = NumberFormat.getCurrencyInstance(usa);
System.out.println(formatter.format(dolares));
}
}
En este caso la salida será:
USD 0.46
Si necesitas definir otra constante de idioma para crear el objeto Locale, puedes ver todos las disponibles aquí:
http://docs.oracle.com/javase/7/docs/api/java/util/Locale.html .
Por tanto, gracias a NumberFormat, no tenemos que definir un formateador ya que por sí solo según el Locale definido, es capaz de darle formato a los números y mostrar el nombre de la moneda.
Fuentes:
http://www.avajava.com/tutorials/lessons/how-do-i-use-numberformat-to-format-currencies.htmlTweet