Share this page 

Display currencyTag(s): Internationalization String/Number


Using Java Money (JSR-354)
Since Java Money is not included in the JRE, you need include a reference in a POM.
<dependency>
  <groupId>org.javamoney</groupId>
  <artifactId>moneta</artifactId>
  <version>1.4.4</version>
  <type>pom</type>
</dependency>
import java.util.Locale;

// https://javamoney.github.io/ri.html
import org.javamoney.moneta.Money;
import javax.money.MonetaryAmount;
import javax.money.format.MonetaryFormats;

public class CurrencyTest {

	public static void main(final String... args) {
		final MonetaryAmount amount = Money.of(123.45, "EUR");

		System.out.println(MonetaryFormats.getAmountFormat(Locale.GERMANY).format(amount));
		System.out.println(MonetaryFormats.getAmountFormat(Locale.US).format(amount));
		/* output
		 * 123,45 EUR
		 * EUR123.45
		 */
	}
}
Using Java NumberFormat
import java.math.BigDecimal;
import java.text.NumberFormat;
import java.util.Locale;

public class CurrencyLegacyTest {

	public static void main(String[] args) {
        BigDecimal amount = new BigDecimal(123.45);

		String germany = NumberFormat.getCurrencyInstance(Locale.GERMANY).format(amount);
		String us = NumberFormat.getCurrencyInstance(Locale.US).format(amount);

		System.out.println(germany);
		System.out.println(us);

		// use german number format but specify US currency
		java.text.NumberFormat format =
		    java.text.NumberFormat.getCurrencyInstance(java.util.Locale.GERMANY);
		java.util.Currency usd = java.util.Currency.getInstance("USD");
		format.setCurrency(usd);
		System.out.println(format.format(amount));

		/* output
		 * 123,45 €
		 * $123.45
		 * 123,45 $
		 */
	}
}
See also : Validate/Convert a number using the current Locale().
mail_outline
Send comment, question or suggestion to howto@rgagnon.com