Java プラットフォーム 1.2

java.text
クラス DecimalFormat

java.lang.Object
  |
  +--java.text.Format
        |
        +--java.text.NumberFormat
              |
              +--java.text.DecimalFormat

public class DecimalFormat
extends NumberFormat

DecimalFormat は、10 進数値をフォーマットするための NumberFormat の具象サブクラスです。このクラスでは、さまざまなパラメータが使用でき、西欧、アラビア、インドの数字への地域対応が可能です。

通常、getInstance など NumberFormat のファクトリメソッドの 1 つを使って、特定のロケール (デフォルトロケールを含む) に対する適切な NumberFormat を取得します。そうすると、あとで (DecimalFormat であることを調べてから) これを修正することができます。

解析で正と負を区別するには、接頭辞か接尾辞が異なっていなければなりません。数字、1000、または小数の区切り文字が同じものであったり、それらのどれかが接頭辞や接尾辞にあったりする場合は、解析を信頼することはきません。

特殊な場合:

NaN は、単一文字 (通常は ¥¥uFFFD) としてフォーマットされます。

+/-Infinity は、単一文字 (通常は ¥¥u221E) と正と負の接頭辞/接辞部としてフォーマットされます。

注: このクラスは、一般的なユーザのためのものです。非常に大きな数値や非常に小さな数値では、指数値を表すことができるフォーマットを使用してください。

例:

 // normally we would have a GUI with a menu for this
 Locale[] locales = NumberFormat.getAvailableLocales();

 double myNumber = -1234.56;
 NumberFormat form;

 // just for fun, we print out a number with the locale number, currency
 // and percent format for each locale we can.
 for (int j = 0; j < 3; ++j) {
     System.out.println("FORMAT");
     for (int i = 0; i < locales.length; ++i) {
         if (locales[i].getCountry().length() == 0) {
            // skip language-only
            continue;
         }
         System.out.print(locales[i].getDisplayName());
         switch (j) {
         default:
             form = NumberFormat.getInstance(locales[i]); break;
         case 1:
             form = NumberFormat.getCurrencyInstance(locales[i]); break;
         case 0:
             form = NumberFormat.getPercentInstance(locales[i]); break;
         }
         try {
             System.out.print(": " + ((DecimalFormat)form).toPattern()
                          + " -> " + form.format(myNumber));
         } catch (IllegalArgumentException iae) { }
         try {
             System.out.println(" -> " + form.parse(form.format(myNumber)));
         } catch (ParseException pe) { }
     }
 }
 
そのパターンの構造体を次に示します。
 pattern    := subpattern{;subpattern}
 subpattern := {prefix}integer{.fraction}{suffix}

 prefix     := '¥¥u0000'..'¥¥uFFFD' - specialCharacters
 suffix     := '¥¥u0000'..'¥¥uFFFD' - specialCharacters
 integer    := '#'* '0'* '0'
 fraction   := '0'* '#'*

 注釈:
  X*       x の 0 またはそれ以上のインスタンス
  (X | Y)  X か Y
  X..Y     X から Y までの任意の文字
  S - T    S の中の文字。ただし、T の中のものは除く
 
最初のサブパターンは正の数値用です。2 つ目 (任意指定) のサブパターンは、負の数値用です (どちらの場合も、整数部分に ',' がある。BNF で示すと、非常に複雑になる)。

次に示すのは、サブパターンの多くの箇所で使用される特殊文字です。それらの使用法も示します。

記号    意味
 0      数字
 #      数字。ゼロだと表示されない
 .      数値桁区切り文字の位置
 ,      グループ区切り文字位置
 E      指数フォーマットの仮数と指数を区切る
 ;      フォーマットを区切る
 -      デフォルトの負の接頭辞
 %      100 倍してパーセントを表す
 ?      1000 倍してパーミルを表す
 $      通貨記号。通貨文字によって置き換えられる。
        2 つ重ねると、国際通貨文字によって置き換えられる。
        パターン内にこの記号があると、数値桁区切り文字の
        代わりに通貨桁区切り文字が使用される
 X      接頭辞や接尾辞にはその他の任意の文字が使用できる
 '      接頭辞や接尾辞で特殊文字を引用するときに使用する
 

注:

明示的な負のサブパターンがないと、- が正形式の前に付けられます。つまり、「0.00」単独は、「0.00;-0.00」と同じです。明示的な負のサブパターンがあると、これは負の接頭辞と接尾辞を指定するためだけに機能します。桁数、最小桁数、その他の特性はすべて正のパターンと同じです。これは、「#,##0.0#;(#)」が「#,##0.0#;(#,##0.0#)」と正確に同じ結果を持つことを意味します。

指数文字の直後には 1 つ以上の数字が続く必要があります。たとえば「0.###E0」では、指数文字の後ろの数字の個数は指数の最小桁数を示し、最大桁数はありません。負の指数は、その数値自体に指定された同じ接頭辞や接尾辞を使って示されます。整数の最小桁数は、指数を調整することによって得られます。整数の最大桁数がある場合は、指数グループ化を指定します。たとえば、12345 は 「##0.###E0」を使って「12.345E3」とフォーマットされます。

同じパターン内に「#.#.#」や、「_」 と「*」の混合などの不正なパターンがあると、IllegalArgumentException がスローされます。IllegalArgumentException のメッセージから、エラーが発生した文字列内の位置がわかります。

グループ区切り文字は一般に 1000 で使用しますが、国によっては 10000 で使用するところもあります。この間隔は、100,000,000 や 1,0000,0000 のように、グループ区切り文字の間の一定数の桁数です。複数のグループ区切り文字を持つパターンを指定すると、最後の文字と整数の終わりの間が、この間隔として使用されます。したがって、"#,##,###,####" == "######,####" == "##,####,####" となります。

DecimalFormat.parse(String, ParsePosition) を呼び出したときに解析が失敗すると、null オブジェクトが返されます。解析位置が変わらないことからも解析時にエラーが発生したことがわかります。簡易メソッドである DecimalFormat.parse(String) を呼び出したときに解析が失敗すると、ParseException がスローされます。

このクラスは、10 進数を表すすべての Unicode 文字を扱います。この文字セットは、Unicode 規格で定義されています。

関連項目:
Format, NumberFormat, ChoiceFormat, 直列化された形式

クラス java.text.NumberFormat から継承したフィールド
FRACTION_FIELD, INTEGER_FIELD
 
コンストラクタの概要
DecimalFormat()
          デフォルトロケールに対して、デフォルトのパターンと記号を使って DecimalFormat を作成します。
DecimalFormat(String pattern)
          デフォルトロケールに対して、指定されたパターンと記号を使って DecimalFormat を作成します。
DecimalFormat(String pattern, DecimalFormatSymbols symbols)
          指定されたパターンと記号を使って DecimalFormat を作成します。
 
メソッドの概要
 void applyLocalizedPattern(String pattern)
          指定されたパターンをこの Format オブジェクトに適用します。
 void applyPattern(String pattern)
          指定されたパターンをこの Format オブジェクトに適用します。
 Object clone()
          標準オーバーライドです。
 boolean equals(Object obj)
          equals をオーバーライドします。
 StringBuffer format(double number, StringBuffer result, FieldPosition fieldPosition)
           
 StringBuffer format(long number, StringBuffer result, FieldPosition fieldPosition)
           
 DecimalFormatSymbols getDecimalFormatSymbols()
          数値桁区切り文字を返します。
 int getGroupingSize()
          グループ化サイズを返します。
 int getMultiplier()
          パーセントやパーミル (1000) などで使用する掛け数を取得します。
 String getNegativePrefix()
          負の接頭辞を取得します。
 String getNegativeSuffix()
          負の接尾辞を取得します。
 String getPositivePrefix()
          正の接頭辞を取得します。
 String getPositiveSuffix()
          正の接尾辞を取得します。
 int hashCode()
          hashCode をオーバーライドします。
 boolean isDecimalSeparatorAlwaysShown()
          整数と区別する小数点の動作を取得します (小数位では小数点が常に表示される)。
 Number parse(String text, ParsePosition parsePosition)
           
 void setDecimalFormatSymbols(DecimalFormatSymbols newSymbols)
          数値桁区切り文字を設定します。
 void setDecimalSeparatorAlwaysShown(boolean newValue)
          整数と区別する小数点の動作を設定します (小数位では小数点が常に表示される)。
 void setGroupingSize(int newValue)
          グループ化サイズを設定します。
 void setMaximumFractionDigits(int newValue)
          数値の小数部分の最大桁数を設定します。
 void setMaximumIntegerDigits(int newValue)
          数値の整数部分の最大桁数を設定します。
 void setMinimumFractionDigits(int newValue)
          数値の小数部分の最小桁数を設定します。
 void setMinimumIntegerDigits(int newValue)
          数値の整数部分の最小桁数を設定します。
 void setMultiplier(int newValue)
          パーセントやパーミル (1000) などで使用する掛け数を設定します。
 void setNegativePrefix(String newValue)
          負の接頭辞を設定します。
 void setNegativeSuffix(String newValue)
          負の接尾辞を設定します。
 void setPositivePrefix(String newValue)
          正の接頭辞を設定します。
 void setPositiveSuffix(String newValue)
          正の接尾辞を設定します。
 String toLocalizedPattern()
          この Format オブジェクトの現在の状態を表す地域対応されたパターン文字列を総合します。
 String toPattern()
          この Format オブジェクトの現在の状態を表すパターン文字列を総合します。
 
クラス java.text.NumberFormat から継承したメソッド
format, format, format, getAvailableLocales, getCurrencyInstance, getCurrencyInstance, getInstance, getInstance, getMaximumFractionDigits, getMaximumIntegerDigits, getMinimumFractionDigits, getMinimumIntegerDigits, getNumberInstance, getNumberInstance, getPercentInstance, getPercentInstance, isGroupingUsed, isParseIntegerOnly, parse, parseObject, setGroupingUsed, setParseIntegerOnly
 
クラス java.text.Format から継承したメソッド
format, parseObject
 
クラス java.lang.Object から継承したメソッド
finalize, getClass, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

DecimalFormat

public DecimalFormat()
デフォルトロケールに対して、デフォルトのパターンと記号を使って DecimalFormat を作成します。これは、国際化が主要な問題でない場合は、DecimalFormat を得るためには簡単な方法です。

指定されたロケールに対する標準フォーマットを得るには、getNumberInstance など、NumberFormat のファクトリメソッドを使用してください。これらのファクトリメソッドは、指定されたロケールに対する NumberFormat の最適なサブクラスを返します。

関連項目:
NumberFormat.getInstance(), NumberFormat.getNumberInstance(), NumberFormat.getCurrencyInstance(), NumberFormat.getPercentInstance()

DecimalFormat

public DecimalFormat(String pattern)
デフォルトロケールに対して、指定されたパターンと記号を使って DecimalFormat を作成します。これは、国際化が主要な問題でない場合は、DecimalFormat を得るためには簡単な方法です。

指定されたロケールに対する標準フォーマットを得るには、getNumberInstance など、NumberFormat のファクトリメソッドを使用してください。これらのファクトリメソッドは、指定されたロケールに対する NumberFormat の最適なサブクラスを返します。

パラメータ:
pattern - 非地域対応のパターン文字列
例外:
IllegalArgumentException - 指定されたパターンが正しくない場合
関連項目:
NumberFormat.getInstance(), NumberFormat.getNumberInstance(), NumberFormat.getCurrencyInstance(), NumberFormat.getPercentInstance()

DecimalFormat

public DecimalFormat(String pattern,
                     DecimalFormatSymbols symbols)
指定されたパターンと記号を使って DecimalFormat を作成します。フォーマットの動作を完全にカスタマイズする必要がある場合には、このコンストラクタを使ってください。

指定されたロケールに対する標準フォーマットを得るには、getInstance や getCurrencyInstance など、NumberFormat のファクトリメソッドを使用してください。標準フォーマットをわずかに調整するだけであれば、NumberFormat ファクトリメソッドで返されたフォーマットを修正することができます。

パラメータ:
pattern - 非地域対応のパターン文字列
symbols - 使用する記号セット
例外:
IllegalArgumentException - 指定されたパターンが正しくない場合
関連項目:
NumberFormat.getInstance(), NumberFormat.getNumberInstance(), NumberFormat.getCurrencyInstance(), NumberFormat.getPercentInstance(), DecimalFormatSymbols
メソッドの詳細

format

public StringBuffer format(double number,
                           StringBuffer result,
                           FieldPosition fieldPosition)
オーバーライド:
クラス NumberFormat 内の format

format

public StringBuffer format(long number,
                           StringBuffer result,
                           FieldPosition fieldPosition)
オーバーライド:
クラス NumberFormat 内の format

parse

public Number parse(String text,
                    ParsePosition parsePosition)
オーバーライド:
クラス NumberFormat 内の parse

getDecimalFormatSymbols

public DecimalFormatSymbols getDecimalFormatSymbols()
数値桁区切り文字を返します。これは通常、プログラマやユーザによって変更されません。
戻り値:
必要な DecimalFormatSymbols
関連項目:
DecimalFormatSymbols

setDecimalFormatSymbols

public void setDecimalFormatSymbols(DecimalFormatSymbols newSymbols)
数値桁区切り文字を設定します。これは通常、プログラマやユーザによって変更されません。
パラメータ:
newSymbols - 必要な DecimalFormatSymbols
関連項目:
DecimalFormatSymbols

getPositivePrefix

public String getPositivePrefix()
正の接頭辞を取得します。

例: +123、$123、sFr123


setPositivePrefix

public void setPositivePrefix(String newValue)
正の接頭辞を設定します。

例: +123、$123、sFr123


getNegativePrefix

public String getNegativePrefix()
負の接頭辞を取得します。

例: -123、($123) (負の接尾辞付き)、 sFr-123


setNegativePrefix

public void setNegativePrefix(String newValue)
負の接頭辞を設定します。

例: -123、($123) (負の接尾辞付き)、sFr-123


getPositiveSuffix

public String getPositiveSuffix()
正の接尾辞を取得します。

例: 123%


setPositiveSuffix

public void setPositiveSuffix(String newValue)
正の接尾辞を設定します。

例: 123%


getNegativeSuffix

public String getNegativeSuffix()
負の接尾辞を取得します。

例: -123%、($123) (正の接尾辞付き)


setNegativeSuffix

public void setNegativeSuffix(String newValue)
負の接尾辞を設定します。

例: 123%


getMultiplier

public int getMultiplier()
パーセントやパーミル (1000) などで使用する掛け数を取得します。パーセントでは、接尾辞として % を、掛け数として 100 を設定します (アラビア語では、グラフィックのパーセント記号を使用する)。パーミルでは、接尾辞として ? を、掛け数として 1000 を設定します。

例: 100 の場合、1.23 -> "123"、"123" -> 1.23


setMultiplier

public void setMultiplier(int newValue)
パーセントやパーミル (1000) などで使用する掛け数を設定します。パーセントでは、接尾辞として % を、掛け数として 100 を設定します (アラビア語では、グラフィックのパーセント記号を使用する)。パーミルでは、接尾辞として ? を、掛け数として 1000 を設定します。

例: 100 の場合、1.23 -> "123"、"123" -> 1.23


getGroupingSize

public int getGroupingSize()
グループ化サイズを返します。グループ化サイズとは、数値の整数部分における区切り文字と区切り文字の間の桁数です。たとえば、数値 123,456.78 の場合、グループ化サイズは 3 です。
関連項目:
setGroupingSize(int), NumberFormat.isGroupingUsed(), DecimalFormatSymbols.getGroupingSeparator()

setGroupingSize

public void setGroupingSize(int newValue)
グループ化サイズを設定します。グループ化サイズとは、数値の整数部分における区切り文字と区切り文字の間の桁数です。たとえば、数値 123,456.78 の場合、グループ化サイズは 3 です。
関連項目:
getGroupingSize(), NumberFormat.setGroupingUsed(boolean), DecimalFormatSymbols.setGroupingSeparator(char)

isDecimalSeparatorAlwaysShown

public boolean isDecimalSeparatorAlwaysShown()
整数と区別する小数点の動作を取得します (小数位では小数点が常に表示される)。

例: Decimal ON: 12345 -> 12345.; OFF: 12345 -> 12345


setDecimalSeparatorAlwaysShown

public void setDecimalSeparatorAlwaysShown(boolean newValue)
整数と区別する小数点の動作を設定します (小数位では小数点が常に表示される)。

例: Decimal ON: 12345 -> 12345.; OFF: 12345 -> 12345


clone

public Object clone()
標準オーバーライドです。セマンティクスは変わりません。
オーバーライド:
クラス NumberFormat 内の clone

equals

public boolean equals(Object obj)
equals をオーバーライドします。
オーバーライド:
クラス NumberFormat 内の equals

hashCode

public int hashCode()
hashCode をオーバーライドします。
オーバーライド:
クラス NumberFormat 内の hashCode

toPattern

public String toPattern()
この Format オブジェクトの現在の状態を表すパターン文字列を総合します。
関連項目:
applyPattern(java.lang.String)

toLocalizedPattern

public String toLocalizedPattern()
この Format オブジェクトの現在の状態を表す地域対応されたパターン文字列を総合します。
関連項目:
applyPattern(java.lang.String)

applyPattern

public void applyPattern(String pattern)
指定されたパターンをこの Format オブジェクトに適用します。パターンとは、各種のフォーマット特性に対する簡略仕様です。これらの特性は、各設定機能メソッドで個別に変更することもできます。

このルーチンで設定される整数の桁数に制限はありません。これは、一般的なエンドユーザの要望であるためです。実際の値を設定したい場合は、setMaximumInteger を使用してください。負の数値の場合は、セミコロンで区切った 2 つ目のパターンを使用します。

例: "#,#00.0#" -> 1,234.56

これは、最小 2 桁の整数、1 つの小数点、最大 2 桁の小数位を意味します。

例: "#,#00.0#;(#,#00.0#)" (負の数値用は括弧で囲む)

負のパターンでは、最小と最大の桁数は無視されます。これらは、正のパターンで設定されるものと見なされます。


applyLocalizedPattern

public void applyLocalizedPattern(String pattern)
指定されたパターンをこの Format オブジェクトに適用します。このパターンの表記は、地域対応されているものと見なされます。パターンとは、各種のフォーマット特性に対する簡略仕様です。これらの特性は、各設定機能メソッドで個別に変更することもできます。

このルーチンで設定される整数の桁数に制限はありません。これは、一般なエンドユーザの要望であるためです。実際の値を設定したい場合は、setMaximumInteger を使用してください。負の数値の場合は、セミコロンで区切った 2 つ目のパターンを使用します。

例: "#,#00.0#" -> 1,234.56

これは、最小 2 桁の整数、1 つの小数点、最大 2 桁の小数位を意味します。

例: "#,#00.0#;(#,#00.0#)" (負の数値用は括弧で囲む)

負のパターンでは、最小と最大の桁数は無視されます。これらは、正のパターンで設定されるものと見なされます。


setMaximumIntegerDigits

public void setMaximumIntegerDigits(int newValue)
数値の整数部分の最大桁数を設定します。このオーバーライドは、整数の桁数を 309 に制限します。
オーバーライド:
クラス NumberFormat 内の setMaximumIntegerDigits
関連項目:
NumberFormat.setMaximumIntegerDigits(int)

setMinimumIntegerDigits

public void setMinimumIntegerDigits(int newValue)
数値の整数部分の最小桁数を設定します。このオーバーライドは、整数の桁数を 309 に制限します。
オーバーライド:
クラス NumberFormat 内の setMinimumIntegerDigits
関連項目:
NumberFormat.setMinimumIntegerDigits(int)

setMaximumFractionDigits

public void setMaximumFractionDigits(int newValue)
数値の小数部分の最大桁数を設定します。このオーバーライドは、小数の桁数を 340 に制限します。
オーバーライド:
クラス NumberFormat 内の setMaximumFractionDigits
関連項目:
NumberFormat.setMaximumFractionDigits(int)

setMinimumFractionDigits

public void setMinimumFractionDigits(int newValue)
数値の小数部分の最小桁数を設定します。このオーバーライドは、小数の桁数を 340 に制限します。
オーバーライド:
クラス NumberFormat 内の setMinimumFractionDigits
関連項目:
NumberFormat.setMinimumFractionDigits(int)

Java プラットフォーム 1.2

バグや機能要求の報告
新しい javadoc の表示についてのコメントやご提案
Java は、米国およびその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-1998 Sun Microsystems, Inc. 901 San Antonio Road,
Palo Alto, California, 94303, U.S.A. All Rights Reserved.