NumberFormat
class, you can format numbers, currencies, and percentages according
to Locale
. The material that follows demonstrates
formatting techniques with a sample program called
NumberFormatDemo
.
NumberFormat
methods to format
primitive-type numbers, such as double
, and their
corresponding wrapper objects, such as Double
.
The following code example formats a Double
according to
Locale
. Invoking the getNumberInstance
method
returns a locale-specific instance of NumberFormat
. The
format
method accepts the Double
as an
argument and returns the formatted number in a String
.
Double amount = new Double(345987.246); NumberFormat numberFormatter; String amountOut; numberFormatter = NumberFormat.getNumberInstance(currentLocale); amountOut = numberFormatter.format(amount); System.out.println(amountOut + " " + currentLocale.toString());
The output from this example shows how the format of the same number
varies with Locale
:
345 987,246 fr_FR 345.987,246 de_DE 345,987.246 en_US
getCurrencyInstance
to
create a formatter. When you invoke the format
method, it
returns a String
that includes the formatted number and
the appropriate currency sign.
This code example shows how to format currency in a locale-specific manner:
Double currency = new Double(9876543.21); NumberFormat currencyFormatter; String currencyOut; currencyFormatter = NumberFormat.getCurrencyInstance(currentLocale); currencyOut = currencyFormatter.format(currency); System.out.println(currencyOut + " " + currentLocale.toString());
The output generated by the preceding lines of code is as follows:
9 876 543,21 € fr_FR 9.876.543,21 € de_DE $9,876,543.21 en_US
At first glance this output may look wrong to you, because the numeric
values are all the same. Of course, 9 876 543,21 € is not equivalent to
$9.876.543,21. However, bear in mind that the
NumberFormat
class is unaware of exchange rates. The
methods belonging to the NumberFormat
class format
currencies but do not convert them.
currency.properties
file. See the
Currency
class specification for more information.
NumberFormat
class to
format percentages. To get the locale-specific formatter, invoke the
getPercentInstance
method. With this formatter, a decimal
fraction such as 0.75 is displayed as 75%.
The following code sample shows how to format a percentage.
Double percent = new Double(0.75); NumberFormat percentFormatter; String percentOut; percentFormatter = NumberFormat.getPercentInstance(currentLocale); percentOut = percentFormatter.format(percent);