勝手に Java リファレンス / DecimalFormat クラス

戻る

DecimalFormat クラスによる、数値の整形表示
 Java以外の言語だと、数値表示時の桁揃えや整形に FORMAT 命令がよく使われますが、Javaでは、これらの機能は、NumberFormat クラスの具象クラスである、DecimalFormatクラスChoiceFormatクラス で実装されています。

 実際のコードを載せた方が話が早いでしょう。
 たとえば、「4桁以下の場合は4桁になるように、先頭に0を入れる」場合は、


java.text.*;

//255 を頭に0をつけて4桁にするコード
long sourceNumber = 255;
NumberFormat df = new DecimalFormat( "0000" );

//結果の文字列を表示
System.out.println( df.format( sourceNumber ));

 というコードを書きます。
 単純ですね。

 new DecimalFormat( "0000" )

 で指定している "0000" は「パターン」で、ここを変えると桁数を変えたり、区切り桁数を変えたり、小数点の切り捨てなど、いろいろなことができます。

 例えば、 "#,#00.0#" を指定すると 1,234.56 のように表示されます。

 これは、具体的には、最小 2 桁の整数、1 つの小数点、最大 2 桁の小数を意味します。(Java2 APIリファレンスより引用)

 利用可能なパターンについては、Java2 APIリファレンスの「DecimalFormat」クラスの項で説明されていますので、ぜひ参照してください。

 また、現在のロケールを意識するのであれば、ファクトリメソッドを利用して、以下のようなコードを書くこともできます。

java.text.*;

//255 を頭に0をつけて4桁にするコード
long sourceNumber = 255;
NumberFormat df = DecimalFormat.getInstance();
((DecimalFormat)df).applyLocalizedPattern( "0000" );

//結果の文字列を表示
System.out.println( df.format( sourceNumber ));


 注意すべき点としては、DecimalFormat クラスは、スーパークラスである NumberFormat クラスからファクトリメソッド getInstance() を継承しているため、DecimalFormat.getInstance() メソッドは NumberFormat 型を返します。
 しかし、パターン設定メソッド applyLocalizedPattern() は、具象クラスである DecimalFormat クラスに属していますので、呼び出し時は DecimalFormat型にキャストして呼び出す必要があります。