|
Java プラットフォーム 1.2 |
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
java.lang.Object
|
+--java.text.Format
|
+--java.text.NumberFormat
|
+--java.text.DecimalFormat
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.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 - 非地域対応のパターン文字列NumberFormat.getInstance(),
NumberFormat.getNumberInstance(),
NumberFormat.getCurrencyInstance(),
NumberFormat.getPercentInstance()
public DecimalFormat(String pattern,
DecimalFormatSymbols symbols)
指定されたロケールに対する標準フォーマットを得るには、getInstance や getCurrencyInstance など、NumberFormat のファクトリメソッドを使用してください。標準フォーマットをわずかに調整するだけであれば、NumberFormat ファクトリメソッドで返されたフォーマットを修正することができます。
pattern - 非地域対応のパターン文字列symbols - 使用する記号セットNumberFormat.getInstance(),
NumberFormat.getNumberInstance(),
NumberFormat.getCurrencyInstance(),
NumberFormat.getPercentInstance(),
DecimalFormatSymbols| メソッドの詳細 |
public StringBuffer format(double number,
StringBuffer result,
FieldPosition fieldPosition)
public StringBuffer format(long number,
StringBuffer result,
FieldPosition fieldPosition)
public Number parse(String text,
ParsePosition parsePosition)
public 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()
public boolean equals(Object obj)
public int hashCode()
public 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.setMaximumIntegerDigits(int)public void setMinimumIntegerDigits(int newValue)
NumberFormat.setMinimumIntegerDigits(int)public void setMaximumFractionDigits(int newValue)
NumberFormat.setMaximumFractionDigits(int)public void setMinimumFractionDigits(int newValue)
NumberFormat.setMinimumFractionDigits(int)
|
Java プラットフォーム 1.2 |
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||