|
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
内の format
number
- フォーマットする doubletoAppendTo
- テキストを追加する位置fieldPosition
- 入力の場合は位置合わせフィールド (必要な場合)。出力の場合は位置合わせフィールドのオフセットFieldPosition
public StringBuffer format(long number, StringBuffer result, FieldPosition fieldPosition)
NumberFormat
内の format
number
- フォーマットする longtoAppendTo
- テキストを追加する位置fieldPosition
- 入力の場合は位置合わせフィールド (必要な場合)。出力の場合は位置合わせフィールドのオフセットFieldPosition
public Number parse(String text, ParsePosition parsePosition)
Number
のインスタンスを返します。ソース文字列のビットをすべて表すことができるもっとも実用的なサブクラスが選択されます。NumberFormat
内の parse
text
- 解析される文字列parsePosition
- 入口では、解析を開始する位置、出口では最後に解析された文字を超えた位置。解析が失敗すると、インデックスは移動してエラーインデックスが設定されるnull
public DecimalFormatSymbols getDecimalFormatSymbols()
DecimalFormatSymbols
public void setDecimalFormatSymbols(DecimalFormatSymbols newSymbols)
newSymbols
- 必要な DecimalFormatSymbolsDecimalFormatSymbols
public 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
内の clone
java.lang.Object
からコピーされたタグ:CloneNotSupportedException
- オブジェクトのクラスが Cloneable
インタフェースをサポートしていない場合。clone
メソッドをオーバーライドしたサブクラスも、インスタンスを複製できないことを示すためにこの例外をスローすることがあるOutOfMemoryError
- 十分なメモリがない場合Cloneable
public boolean equals(Object obj)
NumberFormat
内の equals
java.lang.Object
からコピーされたタグ:obj
- 比較対象の参照オブジェクトtrue
、そうでない場合は false
Boolean.hashCode()
,
Hashtable
public int hashCode()
NumberFormat
内の hashCode
java.lang.Object
からコピーされたタグ:Object.equals(java.lang.Object)
,
Hashtable
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
NumberFormat.setMaximumIntegerDigits(int)
public void setMinimumIntegerDigits(int newValue)
NumberFormat
内の setMinimumIntegerDigits
NumberFormat.setMinimumIntegerDigits(int)
public void setMaximumFractionDigits(int newValue)
NumberFormat
内の setMaximumFractionDigits
NumberFormat.setMaximumFractionDigits(int)
public void setMinimumFractionDigits(int newValue)
NumberFormat
内の setMinimumFractionDigits
NumberFormat.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.