|
Foundation 1.1.2 | |||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
java.lang.Objectjava.text.Format
java.text.NumberFormat
java.text.DecimalFormat
public class 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 ファクトリメソッドを使用している場合、パターンと記号はローカライズされた ResourceBundle から読み込まれます。
DecimalFormat の構文を次に示します。
Pattern:
PositivePattern
PositivePattern ; NegativePattern
PositivePattern:
Prefixopt Number Suffixopt
NegativePattern:
Prefixopt Number Suffixopt
Prefix:
任意の Unicode 文字 (\uFFFE、\uFFFF、特殊文字を除く)
Suffix:
任意の Unicode 文字 (\uFFFE、\uFFFF、特殊文字を除く)
Number:
Integer Exponentopt
Integer . Fraction Exponentopt
Integer:
MinimumInteger
#
# Integer
# , Integer
MinimumInteger:
0
0 MinimumInteger
0 , MinimumInteger
Fraction:
MinimumFractionopt OptionalFractionopt
MinimumFraction:
0 MinimumFractionopt
OptionalFraction:
# OptionalFractionopt
Exponent:
E MinimumExponent
MinimumExponent:
0 MinimumExponentopt
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 というように、グループ区切り文字間の一定の桁数です。 複数のグループ区切り文字を持つパターンを指定すると、最後の区切り文字と末尾の整数との間が、この間隔として使用されます。したがって、"#,##,###,####" == "######,####" == "##,####,####" となります。
パターン内の多くの文字は文字どおりに取得されます。 このような文字は解析中に一致すると、フォーマット中にそのまま出力されます。一方、特殊文字はほかの文字、文字列、または文字のクラスを表します。特殊文字は、接頭辞や接尾辞にリテラルとして表示する場合は、特に指示がないかぎり、引用符で囲む必要があります。
次にリストする文字は、ローカライズされていないパターンで使用されます。ローカライズされていないパターンでは、代わりにこのフォーマッタの DecimalFormatSymbols オブジェクトから取得した対応する文字を使用すると、これらの文字は特殊な状態ではなくなります。2 つの例外はローカライズされていない通貨記号と引用符です。
記号 位置 ローカライズの有無 意味 0Number あり 数字 #Number あり 数字。ゼロだと表示されない .Number あり 数値桁区切り子または通貨桁区切り子 -Number あり マイナス記号 ,Number あり グループ区切り子 ENumber あり 科学表記法の仮数と指数を区切る。接頭辞や接尾辞内に引用符を付ける必要はない ;サブパターン境界 あり 正と負のサブパターンを区切る %接頭辞または接尾辞 あり 100 倍してパーセントを表す \u2030接頭辞または接尾辞 あり 1000 倍してパーミル値を表す ¤(\u00A4)接頭辞または接尾辞 なし 通貨記号で置換される通貨符号。2 つの場合は、国際通貨記号で置換される。パターン内にある場合は、数値桁区切り子ではなく、通貨桁区切り子が使用される '接頭辞または接尾辞 なし 接頭辞や接尾辞内の特殊文字を引用符で囲む場合に使用される。 たとえば、 "'#'#"を使用すると 123 は"#123"にフォーマットされる。単一引用符自体を作成するには、1 行に 2 つ引用符を使用する ("# o''clock")
科学表記法の数値は仮数と 10 の累乗の結果として表されます。 たとえば、1234 は 1.234 x 10^3 として表されます。仮数の多くは 1.0 <= x <10.0 の範囲内ですが、必ずしもこの範囲内にする必要はありません。 DecimalFormat には、パターンだけを介して科学表記法をフォーマットおよび解析するよう指示できます。現在、科学表記法形式を作成するファクトリメソッドはありません。 パターンでは、指数文字の直後に 1 つ以上の数字を続けて科学表記法を示します。例:"0.###E0" では、1234 は "1.234E3" のようにフォーマットされます。
"0.###E0 m/s" などのパターンが許可されます。
"##0.#####E0" などのように 3 の倍数になります。このパターンを使用すると、数値 12345 は "12.345E3" に、123456 は "123.456E3" にフォーマットされます。
"00.###E0" を使用して "12.3E-4" とフォーマットされます。
"##0.##E0" を使用して "12.3E3" とフォーマットされます。すべての桁を表示する場合は、有効桁数をゼロに設定してください。有効桁数は解析に影響しません。
DecimalFormat は、最近値方向への丸めモード (ROUND_HALF_EVEN を参照) を使用してフォーマットを行います。
DecimalFormat は、フォーマットに DecimalFormatSymbols オブジェクトで定義されている、ローカライズされたゼロ数字で始まる 10 個の連続した文字を数字として使用します。解析では、これらの数字とともに、Character.digit の定義によるすべての Unicode 10 進数を認識します。
NaN は、単一の文字 (通常は \uFFFD) としてフォーマットされます。この文字は DecimalFormatSymbols オブジェクトによって判定されます。これは、接頭辞と接尾辞が使用されない唯一の値です。
無限大は、単一の文字 (通常は \u221E) としてフォーマットされ、正または負の接頭辞および接尾辞が適用されます。無限大文字は DecimalFormatSymbols オブジェクトによって判定されます。
負のゼロ ("-0") は Double(-0.0) として解析されます。ただし、isParseIntegerOnly() が true の場合は Long(0) として解析されます。
decimal フォーマットは同期化されません。スレッドごとに別のフォーマットインスタンスを作成することをお勧めします。複数のスレッドがフォーマットに並行してアクセスする場合は、外部的に同期化する必要があります。
// Print out a number using the localized number, integer, currency,
// and percent format for each locale
Locale[] locales = NumberFormat.getAvailableLocales();
double myNumber = -1234.56;
NumberFormat form;
for (int j=0; j<4; ++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.getIntegerInstance(locales[i]); break;
case 2:
form = NumberFormat.getCurrencyInstance(locales[i]); break;
default:
form = NumberFormat.getPercentInstance(locales[i]); break;
}
if (form instanceof DecimalFormat) {
System.out.print(": " + ((DecimalFormat) form).toPattern());
}
System.out.print(" -> " + form.format(myNumber));
try {
System.out.println(" -> " + form.parse(form.format(myNumber)));
} catch (ParseException e) {}
}
}
NumberFormat,
DecimalFormatSymbols,
ParsePosition,
直列化された形式| 入れ子のクラスの概要 |
|---|
| クラス java.text.NumberFormat から継承された入れ子のクラス/インタフェース |
|---|
NumberFormat.Field |
| フィールドの概要 |
|---|
| クラス 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 をフォーマットして文字列を作成します。 |
AttributedCharacterIterator |
formatToCharacterIterator(Object obj)
Object をフォーマットし、 AttributedCharacterIterator を生成します。 |
Currency |
getCurrency()
通貨値のフォーマット時に、この 10 進フォーマットが使用する通貨を取得します。 |
DecimalFormatSymbols |
getDecimalFormatSymbols()
数値桁区切り文字を返します。 |
int |
getGroupingSize()
グループ化サイズを返します。 |
int |
getMultiplier()
パーセント、パーミルなどで使用する乗数を取得します。 |
String |
getNegativePrefix()
負の接頭辞を取得します。 |
String |
getNegativeSuffix()
負の接尾辞を取得します。 |
String |
getPositivePrefix()
正の接頭辞を取得します。 |
String |
getPositiveSuffix()
正の接尾辞を取得します。 |
int |
hashCode()
hashCode をオーバーライドします。 |
boolean |
isDecimalSeparatorAlwaysShown()
整数と区別する小数点の動作を取得します (小数位では小数点が常に表示される)。 |
Number |
parse(String text,
ParsePosition pos)
文字列からテキストを解析して Number を生成します。 |
void |
setCurrency(Currency currency)
通貨値のフォーマット時に、この数値フォーマットが使用する通貨を設定します。 |
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)
パーセント、パーミルなどで使用する乗数を設定します。 |
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 - ローカライズされていないパターン文字列
NullPointerException - pattern が null の場合
IllegalArgumentException - 指定されたパターンが正しくない場合NumberFormat.getInstance(),
NumberFormat.getNumberInstance(),
NumberFormat.getCurrencyInstance(),
NumberFormat.getPercentInstance()
public DecimalFormat(String pattern,
DecimalFormatSymbols symbols)
指定されたロケールに対する標準フォーマットを得るには、getInstance や getCurrencyInstance など、NumberFormat のファクトリメソッドを使用してください。標準フォーマットをわずかに調整するだけであれば、NumberFormat ファクトリメソッドで返されたフォーマットを修正することができます。
pattern - ローカライズされていないパターン文字列symbols - 使用する記号セット
NullPointerException - 指定された引数が 1 つでも null の場合
IllegalArgumentException - 指定されたパターンが正しくない場合NumberFormat.getInstance(),
NumberFormat.getNumberInstance(),
NumberFormat.getCurrencyInstance(),
NumberFormat.getPercentInstance(),
DecimalFormatSymbols| メソッドの詳細 |
|---|
public StringBuffer format(double number,
StringBuffer result,
FieldPosition fieldPosition)
NumberFormat 内の formatnumber - フォーマットする doubleresult - テキストを追加する位置fieldPosition - 入力では、必要であれば位置合わせフィールド。
出力では、その位置合わせフィールドのオフセット。
FieldPosition
public StringBuffer format(long number,
StringBuffer result,
FieldPosition fieldPosition)
NumberFormat 内の formatnumber - フォーマットする longresult - テキストを追加する位置fieldPosition - 入力では、必要であれば位置合わせフィールド。
出力では、その位置合わせフィールドのオフセット。
FieldPositionpublic AttributedCharacterIterator formatToCharacterIterator(Object obj)
AttributedCharacterIterator を生成します。返された AttributedCharacterIterator を使用すると、結果の String を構築できるとともに、結果の String についての情報を判定できます。
AttributedCharacterIterator の各属性キーは NumberFormat.Field 型です。属性値は属性キーと同一です。
Format 内の formatToCharacterIteratorobj - フォーマットするオブジェクト
NullPointerException - obj が null の場合
IllegalArgumentException - 指定されたオブジェクトを Format でフォーマットできない場合
public Number parse(String text,
ParsePosition pos)
Number を生成します。
メソッドは pos によって指定されたインデックスを開始位置としてテキストの解析を試みます。解析が完了すると、pos のインデックスは、使用された最後の文字 (解析では、文字列の最後までのすべての文字を使用する必要はない) のあとのインデックスに更新され、解析された数値が返されます。更新された pos は、このメソッドの次の呼び出しの開始点を示すのに使用できます。エラーが発生した場合は、pos のインデックスは変更されず、エラーが発生した文字のインデックスに pos のエラーインデックスが設定され、null が返されます。
文字列によって指定された数値をもっとも簡潔に表すことができるサブクラスが選択されます。大部分の整数値は、どのように記述されていても、Long オブジェクトとして返されます。 と "17.000" はどちらも、Long(17) として解析されます。Long に当てはまらない値は Double として返されます。 これには小数部分を持つ値、無限大の値、NaN、および値「-0.0」などが含まれます。DecimalFormat は、Double、Long のいずれを返すかを、ソース文字列内での小数区切り文字の有無で判断するわけではありません。仮にそうした場合は、"10,000,000,000,000,000.00" などの double の仮数をオーバーフローする整数を、正確に解析できなくなります。現在、parse が返すクラスは Long と Double だけですが、呼び出し側はこれに依存する必要はありません。呼び出し側は、Number のメソッド doubleValue や longValue を用いることで、値を必要な型として取得できます。
DecimalFormat は、Character.digit() で定義されている 10 進数字を表すすべての Unicode 文字を解析します。さらに DecimalFormat は、DecimalFormatSymbols オブジェクトで定義されているローカライズされたゼロ数字で始まる 10 個の連続した文字を数字として認識します。
NumberFormat 内の parsetext - 解析される文字列pos - A上記のインデックスおよびエラーインデックス情報を持つ ParsePosition オブジェクト
null
NullPointerException - text または pos が null の場合NumberFormat.isParseIntegerOnly(),
Format.parseObject(java.lang.String, java.text.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.; OFF: 12345 -> 12345
public void setDecimalSeparatorAlwaysShown(boolean newValue)
例:Decimal ON:> 12345.; OFF: 12345 -> 12345
public Object clone()
NumberFormat 内の cloneCloneablepublic boolean equals(Object obj)
NumberFormat 内の equalsobj - 比較対象の参照オブジェクト
true、そうでない場合は falseObject.hashCode(),
Hashtablepublic int hashCode()
NumberFormat 内の hashCodeObject.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#)" (負の数値は括弧で囲む)
負のパターンでは、最小と最大の桁数は無視されます。これらは、正のパターンで設定されるものとみなされます。
NullPointerException - pattern が null の場合
IllegalArgumentException - 指定されたパターンが正しくない場合public void applyLocalizedPattern(String pattern)
このルーチンで設定される整数の桁数に制限はありません。これは、一般なエンドユーザーの要望であるためです。実際の値を設定する場合は、setMaximumInteger を使用してください。負の数値の場合は、セミコロンで区切った 2 つめのパターンを使用します。
例: "#,#00.0#" -> 1,234.56
これは、最小 2 桁の整数、1 つの小数点、最大 2 桁の小数を意味します。
例:"#,#00.0#;(#,#00.0#)" (負の数値は括弧で囲む)
負のパターンでは、最小と最大の桁数は無視されます。これらは、正のパターンで設定されるものとみなされます。
NullPointerException - pattern が null の場合
IllegalArgumentException - 指定されたパターンが正しくない場合public void setMaximumIntegerDigits(int newValue)
このオーバーライドは、整数の桁数を 309 桁に制限します。
- オーバーライド:
- クラス
NumberFormat 内の setMaximumIntegerDigits
- パラメータ:
newValue - 整数の最大表示桁数。0 より小さい場合は 0 が使用される。具象サブクラスでは、この値の上限を、フォーマットされる数値の種類に適した値に強制できる- 関連項目:
NumberFormat.setMaximumIntegerDigits(int)
public void setMinimumIntegerDigits(int newValue)
NumberFormat 内の setMinimumIntegerDigitsnewValue - 整数の最小表示桁数。0 より小さい場合は 0 が使用される。具象サブクラスでは、この値の上限を、フォーマットされる数値の種類に適した値に強制できるNumberFormat.setMinimumIntegerDigits(int)public void setMaximumFractionDigits(int newValue)
NumberFormat 内の setMaximumFractionDigitsnewValue - 小数点の最大表示桁数。0 より小さい場合は 0 が使用される。具象サブクラスでは、この値の上限を、フォーマットされる数値の種類に適した値に強制できるNumberFormat.setMaximumFractionDigits(int)public void setMinimumFractionDigits(int newValue)
NumberFormat 内の setMinimumFractionDigitsnewValue - 小数点の最小表示桁数。0 より小さい場合は 0 が使用される。具象サブクラスでは、この値の上限を、フォーマットされる数値の種類に適した値に強制できるNumberFormat.setMinimumFractionDigits(int)public Currency getCurrency()
DecimalFormatSymbols.getCurrency を呼び出すことで取得されます。
NumberFormat 内の getCurrencynullpublic void setCurrency(Currency currency)
DecimalFormatSymbols.setCurrency を呼び出すことで設定されます。
NumberFormat 内の setCurrencycurrency - この 10 進フォーマットで使用する新しい通貨
NullPointerException - currency が null の場合
|
Foundation 1.1.2 | |||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。