|
JavaTM 2 Platform Std. Ed. v1.3 |
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
java.lang.Object
|
+--java.text.Format
|
+--java.text.NumberFormat
|
+--java.text.DecimalFormat
DecimalFormat は、10 進数をフォーマットする NumberFormat の具象サブクラスです。DecimalFormat には、西欧、アラビア、およびインド数字に対するサポートを含む様々な機能が用意されており、任意のロケールで数値の解析とフォーマットが実行できるよう設計されています。また、整数 (123)、固定小数値 (123.4)、科学表記法 (1.23E4)、パーセント (12%) , および通貨金額 ($123) などのさまざまな種類の数値もサポートしています。これらはすべて地域対応ができます。
デフォルトのロケールなどの特定のロケールの NumberFormat を取得するためには、getInstance() などの NumberFormat のファクトリメソッドの 1 つを呼び出します。通常、NumberFormat ファクトリメソッドは DecimalFormat 以外のサブクラスを返す場合があるため、DecimalFormat コンストラクタを直接呼び出しません。フォーマットオブジェクトをカスタマイズする必要がある場合は、次のように実行します。
NumberFormat f = NumberFormat.getInstance(loc);
if (f instanceof DecimalFormat) {
((DecimalFormat) f).setDecimalSeparatorAlwaysShown(true);
}
DecimalFormat はパターンおよび記号のセットで構成されます。パターンの設定は applyPattern() を使用して直接行うか、または API メソッドを使用して間接的に行います。記号は DecimalFormatSymbols オブジェクトに格納されます。NumberFormat ファクトリメソッドを使用している場合、パターンと記号は java.text.resource パッケージ内の地域対応された ResourceBundle から読み込まれます。
例
// Print out a number using the localized number, currency,
// and percent format for each locale
Locale[] locales = NumberFormat.getAvailableLocales();
double myNumber = -1234.56;
NumberFormat form;
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) {
continue; // Skip language-only locales
}
System.out.print(locales[i].getDisplayName());
switch (j) {
case 0:
form = NumberFormat.getInstance(locales[i]); break;
case 1:
form = NumberFormat.getCurrencyInstance(locales[i]); break;
default:
form = NumberFormat.getPercentInstance(locales[i]); break;
}
try {
// Assume form is a DecimalFormat
System.out.print(": " + ((DecimalFormat) form).toPattern()
+ " -> " + form.format(myNumber));
} catch (IllegalArgumentException e) {}
try {
System.out.println(" -> " + form.parse(form.format(myNumber)));
} catch (ParseException e) {}
}
}
パターン
DecimalFormat パターンには「#,##0.00;(#,##0.00)」などの、正と負のサブパターンがあります。各サブパターンには接頭辞、数値部分、接尾辞が 1 つずつあります。負のサブパターンはオプションです。このオプションを設定しない場合は、正のサブパターンに地域対応されたマイナス記号 (ほとんどのロケールでは「-」) を接頭辞として付けて、負のサブパターンとして使用します。つまり、単独の「0.00」は「0.00;-0.00」と等価になります。明示的な負のサブパターンがあると、これはは負の接頭辞と接尾辞を指定する場合にだけ機能します。桁数、最小桁数、およびその他の特性はすべて正のパターンと同じです。これは「#,##0.0#;(#)」は「#,##0.0#;(#,##0.0#)」と正確に同じ結果になることを意味します。
接頭辞、接尾辞、および無限大、桁、1000 の区切り、および小数の区切り文字などに使用するさまざまな記号は、任意の値に設定でき、フォーマット中に正しく表示されます。ただし、記号と文字列が矛盾しないように注意をしないと、解析は信頼性を持ちません。たとえば、DecimalFormat.parse() で正の値と負の値を区別できるように、正と負の接頭辞や接尾辞は異なる必要があります。同一であると、DecimalFormat は負のサブパターンが指定されていないものとして動作します。別の例として、数値桁区切り子と 1000 の区切り子には異なる文字を使用する必要があります。同一の文字を使用すると解析が不可能になります。
グループ区切り子は一般に 1000 で使用しますが、国によっては 10000 を区切る場合に使用するところもあります。グループ区切りのサイズは、100,000,000 の場合は 3、1,0000,0000 の場合は 4 というように、グループ区切り文字間の一定の桁数です。複数のグループ区切り文字を持つパターンを指定すると、最後の文字と整数の終わりの間が、この間隔として使用されます。したがって、"#,##,###,####" == "######,####" == "##,####,####" となります。
「#.#.#」や「#.###,###」などの不正なパターンを使用すると、DecimalFormat では、問題を示すメッセージとともに IllegalArgumentException がスローされます。
解析
DecimalFormat は、Character.digit() で定義されている、10 進数字を表すすべての Unicode 文字を解析します。さらに、DecimalFormat は、DecimalFormatSymbols オブジェクトで定義されている地域対応されたゼロ数字で始まる 10 個の連続した文字を数字として認識します。フォーマット中に、DecimalFormatSymbols に基づいた数字が出力されます。
DecimalFormat.parse は、解析された数値文字列を表す java.lang.Number のサブクラスを返します。DecimalFormat は数値文字列を表すことができるもっとも実用的なサブクラスを選択します。これは、ほとんどの整数値が、どのような書き方をされている場合でも Long オブジェクトとして返されることを意味します。たとえば、「17」および「17.000」は両方とも Long(17) に解析されます。Long に適合しない値は、Double として返されます。これには、小数部分を持つ値、無限大値、NaN、-0.0 の値などがあります。DecimalFormat は、ソース文字列内に数値桁区切り子があるかどうかに基づいて Double または Long のどちらを返すか決定しません。これを実行すると、「10,000,000,000,000,000.00」などの double の仮数をオーバーフローする整数を正確に解析できなくなります。現在、DecimalFormat によって返されるクラスは Long と Double だけですが、呼び出し側はこれに依存する必要はありません。呼び出し側は Number メソッドの doubleValue、longValue などを使用して、必要な型を取得できます。
DecimalFormat.parse(String, ParsePosition) は文字列の解析に失敗すると null を返し、ParsePosition インデックスは変更されず、ParsePosition はエラーインデックスに設定されます。簡易メソッド DecimalFormat.parse(String) は、ParseException をスローして解析の失敗を示します。
特殊な値
NaN は単一の文字 (通常は \uFFFD) としてフォーマットされます。この文字は DecimalFormatSymbols オブジェクトによって判定されます。これは、接頭辞と接尾辞が使用されない唯一の値です。
無限大は単一文字 (通常は、\u221E) としてフォーマットされ、負または正の接頭辞および接尾辞が適用されます。無限大文字は DecimalFormatSymbols オブジェクトによって判定されます。
負のゼロ (「-0」) は、isParseIntegerOnly() が true でない場合は Double(-0.0) に解析され、true である場合は Long(0) に解析されます。
科学表記法
科学表記法の数値は仮数と 10 の累乗の結果として表されます。たとえば、1234 は 1.234 x 10^3 として表せます。仮数の多くは 1.0 <= x <10.0 の範囲内ですが、必ずしもこの範囲内にする必要はありません。DecimalFormat には、パターンだけを介して科学表記法をフォーマットおよび解析するよう指示できます。現在、科学表記法形式を作成するファクトリメソッドはありません。パターンでは、指数文字の直後に 1 つ以上の数字を続けて科学表記法を示します。たとえば、「0.###E0」では 1234 を「1.234E3」とフォーマットします。
パターン構文
pattern := pos_pattern{';' neg_pattern}
pos_pattern := {prefix}number{suffix}
neg_pattern := {prefix}number{suffix}
number := integer{'.' fraction}{exponent}
prefix := '\u0000'..'\uFFFD' - special_characters
suffix := '\u0000'..'\uFFFD' - special_characters
integer := min_int | '#' | '#' integer | '#' ',' integer
min_int := '0' | '0' min_int | '0' ',' min_int
fraction := '0'* '#'*
exponent := 'E' '0' '0'*
注釈:
X* X の 0 またはそれ以上のインスタンス
{ X } X の 0 またはそれ以上のインスタンス
X | Y X か Y
X..Y X から Y までの任意の文字
S - T S の中の文字。ただし、T の中のものは除く
特殊パターン文字
パターン内の多くの文字は文字どおりに取得されます。このような文字は解析中に一致すると、フォーマット中にそのまま出力されます。一方、特殊文字は他の文字、文字列、または文字のクラスを表します。特殊文字は、接頭辞や接尾辞にリテラルとして表示する場合は、特に指示がない限り、引用符で囲む必要があります。
次にリストする文字は、地域対応されていないパターンで使用されます。地域対応されていないパターンでは、代わりにこのフォーマッタの DecimalFormatSymbols オブジェクトから取得した対応する文字を使用すると、これらの文字は特殊な状態ではなくなります。2 つの例外は地域対応されていない通貨記号と引用符です。
| 記号 | 位置 | 地域対応の有無 | 意味 |
|---|---|---|---|
| 0 | 数値 | Y | 数字 |
| # | 数値 | Y | 数字。ゼロだと表示されない |
| . | 数値 | Y | 数値桁区切り子または通貨桁区切り子 |
| - | 数値 | Y | マイナス記号 |
| , | 数値 | Y | グループ区切り子 |
| E | 数値 | Y | 科学表記法の仮数と指数を区切る。接頭辞や接尾辞内に引用符を付ける必要はない |
| ; | サブパターン境界 | Y | 正と負のサブパターンを区切る |
| % | 接頭辞または接尾辞 | Y | 100 倍してパーセントを表す |
| \u2030 | 接頭辞または接尾辞 | Y | 1000 倍してパーミルを表す |
| ¤
(\u00A4) | 接頭辞または接尾辞 | N | 通貨記号で置換される通貨符号。2 つの場合は、国際通貨記号で置換される。パターン内にある場合は、数値桁区切り子ではなく、通貨桁区切り子が使用される |
| ' | 接頭辞または接尾辞 | N | 接頭辞や接尾辞内の特殊文字を引用符で囲む場合に使用される。たとえば、"'#'#" を使用すると 123 は "#123" にフォーマットされる。単一引用符自体を作成するために合は、1 行に 2 つ引用符を使用する ("# o''clock") |
Format,
NumberFormat,
ChoiceFormat,
ParsePosition, 直列化された形式| クラス 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)
double をフォーマットして文字列を作成します。 |
StringBuffer |
format(long number,
StringBuffer result,
FieldPosition fieldPosition)
long をフォーマットして文字列を作成します。 |
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)
指定された文字列と一致する値を持つ Number のインスタンスを返します。 |
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.Format から継承したメソッド |
format, parseObject |
| クラス java.lang.Object から継承したメソッド |
finalize, getClass, notify, notifyAll, toString, wait, wait, wait |
| コンストラクタの詳細 |
public DecimalFormat()
指定されたロケールに対する標準フォーマットを得るには、getNumberInstance など、NumberFormat のファクトリメソッドを使用してください。これらのファクトリメソッドは、指定されたロケールに対する NumberFormat の最適なサブクラスを返します。
NumberFormat.getInstance(),
NumberFormat.getNumberInstance(),
NumberFormat.getCurrencyInstance(),
NumberFormat.getPercentInstance()public DecimalFormat(String pattern)
指定されたロケールに対する標準フォーマットを得るには、getNumberInstance など、NumberFormat のファクトリメソッドを使用してください。これらのファクトリメソッドは、指定されたロケールに対する NumberFormat の最適なサブクラスを返します。
pattern - 非地域対応のパターン文字列IllegalArgumentException - 指定されたパターンが正しくない場合NumberFormat.getInstance(),
NumberFormat.getNumberInstance(),
NumberFormat.getCurrencyInstance(),
NumberFormat.getPercentInstance()
public DecimalFormat(String pattern,
DecimalFormatSymbols symbols)
指定されたロケールに対する標準フォーマットを得るには、getInstance や getCurrencyInstance など、NumberFormat のファクトリメソッドを使用してください。標準フォーマットをわずかに調整するだけであれば、NumberFormat ファクトリメソッドで返されたフォーマットを修正することができます。
pattern - 非地域対応のパターン文字列symbols - 使用する記号セットIllegalArgumentException - 指定されたパターンが正しくない場合NumberFormat.getInstance(),
NumberFormat.getNumberInstance(),
NumberFormat.getCurrencyInstance(),
NumberFormat.getPercentInstance(),
DecimalFormatSymbols| メソッドの詳細 |
public StringBuffer format(double number,
StringBuffer result,
FieldPosition fieldPosition)
NumberFormat 内の formatnumber - フォーマットする doubletoAppendTo - テキストを追加する位置fieldPosition - 入力の場合は位置合わせフィールド (必要な場合)。出力の場合は位置合わせフィールドのオフセットFieldPosition
public StringBuffer format(long number,
StringBuffer result,
FieldPosition fieldPosition)
NumberFormat 内の formatnumber - フォーマットする longtoAppendTo - テキストを追加する位置fieldPosition - 入力の場合は位置合わせフィールド (必要な場合)。出力の場合は位置合わせフィールドのオフセットFieldPosition
public Number parse(String text,
ParsePosition parsePosition)
Number のインスタンスを返します。ソース文字列のビットをすべて表すことができるもっとも実用的なサブクラスが選択されます。NumberFormat 内の parsetext - 解析される文字列parsePosition - 入口では、解析を開始する位置、出口では最後に解析された文字を超えた位置。解析が失敗すると、インデックスは移動してエラーインデックスが設定されるnullpublic DecimalFormatSymbols getDecimalFormatSymbols()
DecimalFormatSymbolspublic void setDecimalFormatSymbols(DecimalFormatSymbols newSymbols)
newSymbols - 必要な DecimalFormatSymbolsDecimalFormatSymbolspublic String getPositivePrefix()
例: +123、$123、sFr123
public void setPositivePrefix(String newValue)
例: +123、$123、sFr123
public String getNegativePrefix()
例: -123、($123) (負の接尾辞付き)、sFr-123
public void setNegativePrefix(String newValue)
例: -123、($123) (負の接尾辞付き)、sFr-123
public String getPositiveSuffix()
例: 123%
public void setPositiveSuffix(String newValue)
例: 123%
public String getNegativeSuffix()
例: -123%、($123) (正の接尾辞付き)
public void setNegativeSuffix(String newValue)
例: 123%
public int getMultiplier()
例: 100 の場合、1.23 -> "123"、"123" -> 1.23
public void setMultiplier(int newValue)
例: 100 の場合、1.23 -> "123"、"123" -> 1.23
public int getGroupingSize()
setGroupingSize(int),
NumberFormat.isGroupingUsed(),
DecimalFormatSymbols.getGroupingSeparator()public void setGroupingSize(int newValue)
getGroupingSize(),
NumberFormat.setGroupingUsed(boolean),
DecimalFormatSymbols.setGroupingSeparator(char)public boolean isDecimalSeparatorAlwaysShown()
例: Decimal ON: 12345 -> 12345.; OFF: 12345 -> 12345
public void setDecimalSeparatorAlwaysShown(boolean newValue)
例: Decimal ON: 12345 -> 12345.; OFF: 12345 -> 12345
public Object clone()
NumberFormat 内の clonejava.lang.Object からコピーされたタグ:CloneNotSupportedException - オブジェクトのクラスが Cloneable インタフェースをサポートしていない場合。clone メソッドをオーバーライドしたサブクラスも、インスタンスを複製できないことを示すためにこの例外をスローすることがあるOutOfMemoryError - 十分なメモリがない場合Cloneablepublic boolean equals(Object obj)
NumberFormat 内の equalsjava.lang.Object からコピーされたタグ:obj - 比較対象の参照オブジェクトtrue、そうでない場合は falseBoolean.hashCode(),
Hashtablepublic int hashCode()
NumberFormat 内の hashCodejava.lang.Object からコピーされたタグ:Object.equals(java.lang.Object),
Hashtablepublic String toPattern()
applyPattern(java.lang.String)public String toLocalizedPattern()
applyPattern(java.lang.String)public void applyPattern(String pattern)
このルーチンで設定される整数の桁数に制限はありません。これは、一般なエンドユーザの要望であるためです。実際の値を設定したい場合は、setMaximumInteger を使用してください。負の数値の場合は、セミコロンで区切った 2 つ目のパターンを使用します。
例: "#,#00.0#" -> 1,234.56
これは、最小 2 桁の整数、1 つの小数点、最大 2 桁の小数を意味します。
例: "#,#00.0#;(#,#00.0#)" (負の数値は括弧で囲む)
負のパターンでは、最小と最大の桁数は無視されます。これらは、正のパターンで設定されるものと見なされます。
public void applyLocalizedPattern(String pattern)
このルーチンで設定される整数の桁数に制限はありません。これは、一般なエンドユーザの要望であるためです。実際の値を設定したい場合は、setMaximumInteger を使用してください。負の数値の場合は、セミコロンで区切った 2 つ目のパターンを使用します。
例: "#,#00.0#" -> 1,234.56
これは、最小 2 桁の整数、1 つの小数点、最大 2 桁の小数を意味します。
例: "#,#00.0#;(#,#00.0#)" (負の数値は括弧で囲む)
負のパターンでは、最小と最大の桁数は無視されます。これらは、正のパターンで設定されるものと見なされます。
public void setMaximumIntegerDigits(int newValue)
NumberFormat 内の setMaximumIntegerDigitsNumberFormat.setMaximumIntegerDigits(int)public void setMinimumIntegerDigits(int newValue)
NumberFormat 内の setMinimumIntegerDigitsNumberFormat.setMinimumIntegerDigits(int)public void setMaximumFractionDigits(int newValue)
NumberFormat 内の setMaximumFractionDigitsNumberFormat.setMaximumFractionDigits(int)public void setMinimumFractionDigits(int newValue)
NumberFormat 内の setMinimumFractionDigitsNumberFormat.setMinimumFractionDigits(int)
|
JavaTM 2 Platform Std. Ed. v1.3 |
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
Java、Java 2D、JDBC は、米国およびその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2000 Sun Microsystems, Inc. 901 San Antonio Road,
Palo Alto, California, 94303, U.S.A. All Rights Reserved.