How to format a Float Value with the device currency format? How to format a Float Value with the device currency format? android android

How to format a Float Value with the device currency format?


For sake of completeness suppose you want to display a price in phone's current locale (correct decimal mark and thousand separator) but with a currency of your choice.

NumberFormat format = NumberFormat.getCurrencyInstance(Locale.getDefault());format.setCurrency(Currency.getInstance("CZK"));String result = format.format(1234567.89);

result would then hold these values:

  • CZK1,234,567.89 with US locale
  • 1 234 567,89 Kč with Czech locale

If you'd like to omit the decimal part for prices (show $199 instead of $199.00) call this before using the formatter:

format.setMinimumFractionDigits(0);

All options are listed in NumberFormat docs.


I found the solution. THe class NumberFormat has a multitude of predefined formatters. There is also one for formatting currency Values.

If you use the static method getCurrencyInstance the class will return a formatter for the device default currency. I use the following code to set my result:

NumberFormat format = NumberFormat.getCurrencyInstance();((TextView) findViewById(R.id.text_result)).setText(format.format(result));


Check out DecimalFormat.

It has a variety of features designed to make it possible to parse and format numbers in any locale, including support for Western, Arabic, or Indic digits. It also supports different flavors of numbers, including integers ("123"), fixed-point numbers ("123.4"), scientific notation ("1.23E4"), percentages ("12%"), and currency amounts ("$123"). All of these flavors can be easily localized.