O'Reilly logo

Java Cookbook by Ian F. Darwin

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Formatting Numbers

Problem

You need to format numbers.

Solution

Use a NumberFormat subclass.

There are several reasons why Java doesn’t provide the traditional printf / scanffunctions from the C programming language. First, these depend on variable-length argument lists, which makes strict type checking impossible. Second and more importantly, they mix together formatting and input/output in a very inflexible way. Programs using printf / scanf can be very hard to internationalize, for example.

JDK 1.1 introduced a new package, java.text , which is full of formatting routines as general and flexible as anything you might imagine. As with printf, there is an involved formatting language, described in the Javadoc page. Consider the presentation of long numbers. In North America, the number one thousand twenty-four and a quarter is written 1,024.25, in most of Europe it is 1 024.25, and in some other part of the world it might be written 1.024,25. Not to mention how currencies and percentages get formatted! Trying to keep track of this yourself would drive the average small software shop around the bend rather quickly.

Fortunately, the java.text package includes a Locale class, and, furthermore, the Java runtime automatically sets a default Locale object based on the user’s environment; e.g., on the Macintosh and MS-Windows, the user’s preferences; on Unix, the user’s environment variables. (To provide a non-default locale, see Section 14.9.) To provide formatters customized ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required