クラスDecimalFormat
- すべての実装されたインタフェース:
Serializable,Cloneable
DecimalFormatは、10進数をローカライズされた方法で書式設定するNumberFormatの具象サブクラスです。 これには、西欧、アラビア、およびインド数字に対するサポートを含むさまざまな機能が用意されており、任意のロケールで数値の解析とフォーマットが実行できるよう設計されています。 また、整数(123)、固定小数値(123.4)、科学表記法(1.23E4)、パーセント(12%)、および通貨金額($123)などのさまざまな種類の数値もサポートしています。
DecimalFormatの取得
特定のロケール(デフォルト・ロケールを含む)の標準の10進形式を取得するには、NumberFormat.getInstance()などのNumberFormat factory methodsのいずれかをコールすることをお薦めします。 これらのファクトリ・メソッドは、インストールされているロケール・サービス・プロバイダの実装によっては、常にDecimalFormatを返すとはかぎりません。 したがって、DecimalFormatによって定義されたインスタンス・メソッドを使用するには、ファクトリ・メソッドによって返されるNumberFormatは、DecimalFormatに変換する前に型を確認する必要があります。 インストールされているロケール依存のサービス実装が、指定されたLocaleをサポートしていない場合、親ロケール・チェーンが検索され、サポートされているLocaleが使用されます。
ファクトリ・メソッドが不要な場合は、DecimalFormat(String pattern)などのコンストラクタのいずれかを使用します。 patternパラメータの詳細は、Patternの項を参照してください。
DecimalFormatの使用
次に、書式設定と解析の例を示します。NumberFormat nFmt = NumberFormat.getCurrencyInstance(Locale.US);
if (nFmt instanceof DecimalFormat dFmt) {
// pattern match to DecimalFormat to use setPositiveSuffix(String)
dFmt.setPositiveSuffix(" dollars");
dFmt.format(100000); // returns "$100,000.00 dollars"
dFmt.parse("$100,000.00 dollars"); // returns 100000
}
書式設定と解析
丸め
書式設定時に、DecimalFormatはsetRoundingMode(RoundingMode)を使用して丸めを調整できます。 デフォルトでは、RoundingMode.HALF_EVENが使用されます。
Digits
書式設定時、DecimalFormatは、DecimalFormatSymbolsオブジェクトで定義されているローカライズされたゼロ桁から始まる10文字の連続した文字を数字として使用します。
解析時に、Character.digitで定義されているすべてのUnicode 10進数だけでなく、これらの数字も認識されます。
整数および小数桁数の制限
- 実装要件:
BigIntegerおよびBigDecimal以外のNumberをフォーマットする場合、整数桁数の上限として309が使用され、小数桁数の上限として340が使用されます。 これは、DecimalFormatゲッター・メソッドのいずれか(たとえば、getMinimumFractionDigits())が数値的に大きい値を返した場合でも発生します。特殊な値
「数値ではありません」 (
NaN)は文字列として書式設定され、通常は"NaN"と指定されます。 この文字列は、DecimalFormatSymbols.getNaN()によって決定されます。 プレフィクスとサフィクスが添付されていないのは、この値のみです。「無限大」は文字列として書式設定され、通常は"∞" (
U+221E)と指定され、正または負のプレフィクスとサフィクスが添付されます。 この文字列は、DecimalFormatSymbols.getInfinity()によって決定されます。「負のゼロ」 (
"-0")の解析先isParseBigDecimal()がtrueの場合はBigDecimal(0)isParseBigDecimal()がfalseで、isParseIntegerOnly()がtrueの場合はLong(0)isParseBigDecimal()とisParseIntegerOnly()がどちらもfalseである場合はDouble(-0.0)と解析されます
Synchronization
decimalフォーマットは同期化されません。 スレッドごとに別のフォーマット・インスタンスを作成することをお薦めします。 複数のスレッドがフォーマットに並行してアクセスする場合は、外部的に同期化する必要があります。
DecimalFormatパターン
DecimalFormatはパターンおよび記号のセットで構成されます。 パターンは、applyPattern()を使用して直接設定することも、様々なAPIメソッドを使用して間接的に設定することもできます。 記号はDecimalFormatSymbolsオブジェクトに格納されます。NumberFormatファクトリ・メソッドを使用する場合、インストールされているロケール依存のサービス実装からパターンおよび記号が作成されます。DecimalFormatの構文を次に示します。Pattern: PositivePattern PositivePattern ; NegativePattern PositivePattern: Prefixopt Number Suffixopt NegativePattern: Prefixopt Number Suffixopt Prefix: Any characters except the special pattern characters Suffix: Any characters except the special pattern characters 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パターンで使用すると構文的に解釈されます。 特殊文字は、接頭辞や接尾辞にリテラルとして表示する場合は、特に指示がないかぎり、引用符で囲む必要があります。
Symbol列の文字は、ローカライズされていないパターンで使用されます。Localized Symbol列の対応する文字は、ローカライズされたパターンで使用され、Symbolの文字は構文上の意味を失います。 2つの例外は、通貨記号(U+00A4)と、ローカライズされていない引用符(U+0027)です。applyPattern(String)をコールする場合は、ローカライズされていないパターンを使用する必要があります。 ローカライズされたパターンは、applyLocalizedPattern(String)をコールするときに使用する必要があります。シンボル ローカライズされたシンボル ロケーション Meaning 0DecimalFormatSymbols.getZeroDigit()数値 数字 #DecimalFormatSymbols.getDigit()数値 数字。ゼロだと表示されない .DecimalFormatSymbols.getDecimalSeparator()数値 数値桁区切り子または通貨桁区切り子 - (U+002D)DecimalFormatSymbols.getMinusSign()数値 負符号 ,DecimalFormatSymbols.getGroupingSeparator()数値 グループ化セパレータまたは通貨グループ化セパレータ EDecimalFormatSymbols.getExponentSeparator()数値 科学表記法の仮数と指数を区切る。 この値は大/小文字が区別されます。 接頭辞や接尾辞内に引用符を付ける必要はない。 ;DecimalFormatSymbols.getPatternSeparator()サブパターンの境界 正と負のサブパターンを区切る %DecimalFormatSymbols.getPercent()接頭辞または接尾辞 100を乗算してパーセントで表示します。 ‰ ( U+2030)DecimalFormatSymbols.getPerMill()接頭辞または接尾辞 1000倍してパーミル値を表す ¤ ( U+00A4)n/a (ローカライズされていません) 接頭辞または接尾辞 通貨記号で置換される通貨符号。 2つの場合は、国際通貨記号で置換される。 パターンに含まれている場合は、小数点/グループ・セパレータのかわりに通貨小数点/グループ・セパレータが使用されます。 ' (U+0027)n/a (ローカライズされていません) 接頭辞または接尾辞 接頭辞や接尾辞内の特殊文字を引用符で囲む場合に使用される。たとえば、 "'#'#"を使用すると123は"#123"にフォーマットされる。 単一引用符自体を作成するには、1行に2つ引用符を使用する("#o''clock")。最大桁の導出
任意のDecimalFormatパターンについて、パターンが科学表記でない場合、整数桁の最大数はパターンから導出されず、かわりにInteger.MAX_VALUEに設定されます。 それ以外の場合、パターンが科学的な表記法であれば、整数の最大桁数がパターンから導出されます。 この導出の詳細は、Scientific Notationの項を参照してください。setMaximumIntegerDigits(int)を使用して、整数の最大桁数を手動で調整できます。マイナスのサブパターン
DecimalFormatパターンには"#,##0.00;(#,##0.00)"などの、正と負のサブパターンがあります。 各サブパターンには、プリフィクス、数値部分およびサフィックスが含まれます。 マイナスのサブパターンはオプションです。存在しない場合、マイナス記号'-' (U+002D HYPHEN-MINUS)が付いた正のサブパターンがマイナス・サブパターンとして使用されます。 つまり、単独の"0.00"は"0.00;-0.00"と等価になります。 明示的なマイナスのサブパターンがある場合は、マイナスの接頭辞と接尾辞を指定するだけです。桁数、最小桁数、その他の属性はすべてプラスのパターンと同じです。 これは"#,##0.0#;(#)"は"#,##0.0#;(#,##0.0#)"と正確に同じ結果になることを意味します。無限大、数字、グルーピング・セパレータ、小数点などに使用されるプレフィクス、サフィクスおよび様々な記号は、任意の値に設定でき、書式設定時に正しく表示されます。 ただし、記号と文字列が矛盾しないように注意をしないと、解析は信頼性を持ちません。 たとえば、
DecimalFormat.parse()で正の値と負の値を区別できるように、正と負の接頭辞や接尾辞は異なる必要があります。 同一であると、DecimalFormatは負のサブパターンが指定されていないものとして動作します。 別の例として、小数点セパレータとグループ・セパレータは個別の文字にする必要があり、そうしないと解析できません。グループ化セパレータ
グループ化セパレータは、通常千単位に使用されますが、一部のロケールでは1万単位で区切ります。 グループ区切りのサイズとは、100,000,000の場合は3、1,0000,0000の場合は4というように、グループ区切り文字間の一定の桁数です。 複数のグループ区切り文字を持つパターンを指定すると、最後の区切り文字と末尾の整数との間が、この間隔として使用されます。 たとえば、
"#,##,###,####"=="######,####"=="##,####,####"です。科学表記法
科学表記法の数値は仮数と10の累乗の結果として表されます。たとえば、1234は1.234 x 10^3として表されます。 仮数の多くは1.0 ≤ x < 10.0の範囲内ですが、必ずしもこの範囲内である必要はありません。
DecimalFormatには、パターンだけを介して科学表記法をフォーマットおよび解析するよう指示できます。現在、科学表記法形式を作成するファクトリ・メソッドはありません。 パターンでは、指数文字の直後に1つ以上の数字を続けて科学表記法を示します。 例:"0.###E0"では、1234は"1.234E3"のようにフォーマットされます。- 指数文字の後ろの数字の個数は、指数の最小桁数を示します。 最大桁数はありません。 負の指数は、パターンによる接頭辞や接尾辞ではなく、ローカライズされたマイナス記号を使用してフォーマットされます。 これによって、
"0.###E0 m/s"などのパターンが許可されます。 - 「最大整数」桁は、小数点の前にある'0'sと'#'sの合計です。 「最小整数」桁は、小数点の前にある0の合計です。 「最大分数」および「最小小数」桁は同じルールに従いますが、指数の前にある小数点の後の桁に適用されます。 たとえば、次のパターンです:
"#00.0####E0"には、最小整数桁数= 2("00")、最大整数桁数= 3("#00")を指定します。 最小小数桁数= 1("0")、最大小数桁数= 5("0####")になります。 - 整数の最小桁数と最大桁数は同時に解釈されます。
- 整数の最大桁数がその最小桁数より大きく、1より大きい場合、指数は整数の最大桁数の倍数になり、整数の最小桁数は1として解釈されます。 これは、技術表記法の場合によく使用されます。この場合、指数は
"##0.#####E0"などのように3の倍数になります。 このパターンを使用すると、数値12345は"12.345E3"に、123456は"123.456E3"にフォーマットされます。 - そうでない場合、整数の最小桁数は指数を調整することによって得られます。 例: 0.00123は
"00.###E0"を使用して"12.3E-4"とフォーマットされます。
- 整数の最大桁数がその最小桁数より大きく、1より大きい場合、指数は整数の最大桁数の倍数になり、整数の最小桁数は1として解釈されます。 これは、技術表記法の場合によく使用されます。この場合、指数は
- 特定の数値について、マンティッサの有効桁数を次のように計算できます
これは、元の数値自体に十分な有効桁がある場合、通常、mantissaには最大で整数と小数桁が結合されることを意味します。 ただし、元の数値の有効桁数よりもパターンの最小桁数が多い場合、mantissaには、最小整数と小数桁数の合計に等しい有効桁数が設定されます。 有効桁数は解析に影響しません。Mantissa Digits: min(max(Minimum Pattern Digits, Original Number Digits), Maximum Pattern Digits) Minimum pattern Digits: Minimum Integer Digits + Minimum Fraction Digits Maximum pattern Digits: Maximum Integer Digits + Maximum Fraction Digits Original Number Digits: The amount of significant digits in the number to be formattedマンティサの整数部は、精度であるか、または結合された最小桁の合計金額を満たすかに関係なく、小数部分に余分な桁を与えることに注意してください。
この動作は、次の例で確認できます。
DecimalFormat df = new DecimalFormat("#000.000##E0"); df.format(12); // returns "12.0000E0" df.format(123456789) // returns "1.23456789E8" - 指数パターンにはグループ区切り子が含まれない場合があります。
- 導入されたバージョン:
- 1.1
- 外部仕様
- 関連項目:
-
ネストされたクラスのサマリー
クラスjava.text.NumberFormatで宣言されたネストされたクラス/インタフェース
NumberFormat.Field, NumberFormat.Style -
フィールドのサマリー
クラスjava.text.NumberFormatで宣言されたフィールド
FRACTION_FIELD, INTEGER_FIELD -
コンストラクタのサマリー
コンストラクタコンストラクタ説明デフォルトのFORMATロケールに対して、デフォルトのパターンと記号を使ってDecimalFormatを作成します。DecimalFormat(String pattern) デフォルトのFORMATロケールに対して、指定されたパターンと記号を使ってDecimalFormatを作成します。DecimalFormat(String pattern, DecimalFormatSymbols symbols) 指定されたパターンと記号を使ってDecimalFormatを作成します。 -
メソッドのサマリー
修飾子と型メソッド説明voidapplyLocalizedPattern(String pattern) 指定されたパターンをこのFormatオブジェクトに適用します。voidapplyPattern(String pattern) 指定されたパターンをこのFormatオブジェクトに適用します。clone()標準オーバーライドです。セマンティックスは変わりません。boolean指定されたオブジェクトをこのDecimalFormatと比較し、等しいかどうかを確認します。format(double number, StringBuffer result, FieldPosition fieldPosition) doubleをフォーマットして文字列を作成します。format(long number, StringBuffer result, FieldPosition fieldPosition) longをフォーマットして文字列を作成します。final StringBufferformat(Object number, StringBuffer toAppendTo, FieldPosition pos) 数値をフォーマットし、その結果のテキストを指定された文字列バッファに追加します。Objectをフォーマットし、AttributedCharacterIteratorを生成します。通貨値のフォーマット時に、この10進フォーマットが使用する通貨を取得します。数値桁区切り文字のコピーを返します。これは通常、プログラマやユーザーによって変更されません。intグループ化サイズを返します。int数値の小数部分の最大桁数を取得します。int数値の整数部分の最大桁数を取得します。int数値の小数部分の最小桁数を取得します。int数値の整数部分の最小桁数を取得します。intパーセント、パーミル(1000)、およびその類似フォーマットで使用する乗数を取得します。負の接頭辞を取得します。負の接尾辞を取得します。正の接頭辞を取得します。正の接尾辞を取得します。このDecimalFormatで使用されるRoundingModeを取得します。inthashCode()このDecimalFormatのハッシュ・コードを返します。boolean整数と区別する小数点の動作を取得します。booleanparse(java.lang.String, java.text.ParsePosition)メソッドがBigDecimalを返すかどうかを返します。booleanisStrict()この書式で数値が厳密に解析される場合はtrue、それ以外の場合はfalseを返します。parse(String text, ParsePosition pos) 指定された文字列の先頭からテキストを解析して、Numberを生成します。voidsetCurrency(Currency currency) 通貨値のフォーマット時に、この数値フォーマットが使用する通貨を設定します。voidsetDecimalFormatSymbols(DecimalFormatSymbols newSymbols) 数値桁区切り文字を設定します。これは通常、プログラマやユーザーによって変更されません。voidsetDecimalSeparatorAlwaysShown(boolean newValue) 整数と区別する小数点の動作を設定します。voidsetGroupingSize(int newValue) グループ化サイズを設定します。voidsetMaximumFractionDigits(int newValue) 数値の小数部分の最大桁数を設定します。voidsetMaximumIntegerDigits(int newValue) 数値の整数部分の最大桁数を設定します。voidsetMinimumFractionDigits(int newValue) 数値の小数部分の最小桁数を設定します。voidsetMinimumIntegerDigits(int newValue) 数値の整数部分の最小桁数を設定します。voidsetMultiplier(int newValue) パーセント、パーミル(1000)、およびその類似フォーマットで使用する乗数を設定します。voidsetNegativePrefix(String newValue) 負の接頭辞を設定します。voidsetNegativeSuffix(String newValue) 負の接尾辞を設定します。voidsetParseBigDecimal(boolean newValue) parse(java.lang.String, java.text.ParsePosition)メソッドがBigDecimalを返すかどうかを設定します。voidsetPositivePrefix(String newValue) 正の接頭辞を設定します。voidsetPositiveSuffix(String newValue) 正の接尾辞を設定します。voidsetRoundingMode(RoundingMode roundingMode) このDecimalFormatで使用されるRoundingModeを設定します。voidsetStrict(boolean strict) 解析する非厳密値を変更します。このFormatオブジェクトの現在の状態を表すローカライズされたパターン文字列を総合します。このFormatオブジェクトの現在の状態を表すパターン文字列を総合します。toString()デバッグ用に、このDecimalFormatを識別する文字列を返します。クラスjava.text.NumberFormatで宣言されたメソッド
format, format, getAvailableLocales, getCompactNumberInstance, getCompactNumberInstance, getCurrencyInstance, getCurrencyInstance, getInstance, getInstance, getIntegerInstance, getIntegerInstance, getNumberInstance, getNumberInstance, getPercentInstance, getPercentInstance, isGroupingUsed, isParseIntegerOnly, parse, parseObject, setGroupingUsed, setParseIntegerOnlyクラスjava.text.Formatで宣言されたメソッド
format, parseObject
-
コンストラクタの詳細
-
DecimalFormat
public DecimalFormat()デフォルトのFORMATロケールに対して、デフォルトのパターンと記号を使ってDecimalFormatを作成します。 これは、国際化が主要な問題でない場合は、DecimalFormatを得るためには簡単な方法です。- APIのノート:
- 特定のロケールの標準フォーマットを取得するには、
NumberFormat.getNumberInstance(Locale)などのNumberFormatファクトリ・メソッドを使用します。 これらのファクトリは、特定のロケールに対してNumberFormatの最も適切なサブクラスを返します。 - 関連項目:
-
DecimalFormat
public DecimalFormat(String pattern) デフォルトのFORMATロケールに対して、指定されたパターンと記号を使ってDecimalFormatを作成します。 これは、国際化が主要な問題でない場合は、DecimalFormatを得るためには簡単な方法です。 通常、最大整数の桁数はパターンから導出されません。 詳細は、Patternsの項のノートを参照してください。- APIのノート:
- 特定のロケールの標準フォーマットを取得するには、
NumberFormat.getNumberInstance(Locale)などのNumberFormatファクトリ・メソッドを使用します。 これらのファクトリは、特定のロケールに対してNumberFormatの最も適切なサブクラスを返します。 - パラメータ:
pattern- ローカライズされていないパターン文字列。- スロー:
NullPointerException-patternがnullである場合IllegalArgumentException- 指定されたパターンが無効な場合。- 関連項目:
-
DecimalFormat
public DecimalFormat(String pattern, DecimalFormatSymbols symbols) 指定されたパターンと記号を使ってDecimalFormatを作成します。 フォーマットの動作を完全にカスタマイズする必要がある場合には、このコンストラクタを使ってください。 通常、最大整数の桁数はパターンから導出されません。 詳細は、Patternsの項のノートを参照してください。- APIのノート:
- 特定のロケールの標準フォーマットを取得するには、
NumberFormat.getInstance(Locale)やNumberFormat.getCurrencyInstance(Locale)などのNumberFormatファクトリ・メソッドを使用します。 標準フォーマットをわずかに調整するだけであれば、NumberFormatファクトリ・メソッドで返されたフォーマットを修正することができます。 - パラメータ:
pattern- ローカライズされていないパターン文字列symbols- 使用する記号セット- スロー:
NullPointerException- 指定された引数が1つでもnullの場合IllegalArgumentException- 指定されたパターンが無効な場合- 関連項目:
-
-
メソッドの詳細
-
format
public final StringBuffer format(Object number, StringBuffer toAppendTo, FieldPosition pos) 数値をフォーマットし、その結果のテキストを指定された文字列バッファに追加します。 指定可能な数値は、Numberの任意のサブクラスです。- オーバーライド:
format、クラスNumberFormat- 実装要件:
- この実装は最大許容精度を使用します。
- パラメータ:
number- フォーマットする数値toAppendTo- フォーマット後のテキストを追加するStringBufferpos- 返された文字列内のフィールドの位置を追跡します。 たとえば、Locale.USロケールで数値1234567.89を書式設定する場合、指定されたfieldPositionがNumberFormat.INTEGER_FIELDの場合、出力文字列1,234,567.89では、fieldPositionの開始索引および終了索引がそれぞれ0および9に設定されます。- 戻り値:
toAppendToとして渡された値- スロー:
IllegalArgumentException-numberがnullであるか、Numberのインスタンスでない場合。NullPointerException-toAppendToまたはposがnullの場合ArithmeticException- 丸め処理が必要な場合に丸めモードがRoundingMode.UNNECESSARYに設定されているとき- 関連項目:
-
format
public StringBuffer format(double number, StringBuffer result, FieldPosition fieldPosition) doubleをフォーマットして文字列を作成します。- 定義:
format、クラスNumberFormat- パラメータ:
number- フォーマットするdoubleresult- テキストを追加する位置fieldPosition- 返された文字列内のフィールドの位置を追跡します。 たとえば、Locale.USロケールで数値1234567.89を書式設定する場合、指定されたfieldPositionがNumberFormat.INTEGER_FIELDの場合、出力文字列1,234,567.89では、fieldPositionの開始索引および終了索引がそれぞれ0および9に設定されます。- 戻り値:
- フォーマットされた数値文字列
- スロー:
NullPointerException-resultまたはfieldPositionがnullの場合ArithmeticException- 丸め処理が必要な場合に丸めモードがRoundingMode.UNNECESSARYに設定されているとき- 関連項目:
-
format
public StringBuffer format(long number, StringBuffer result, FieldPosition fieldPosition) longをフォーマットして文字列を作成します。- 定義:
format、クラスNumberFormat- パラメータ:
number- フォーマットするlongresult- テキストを追加する位置fieldPosition- 返された文字列内のフィールドの位置を追跡します。 たとえば、Locale.USロケールの数値123456789を書式設定する場合、指定されたfieldPositionがNumberFormat.INTEGER_FIELDの場合、出力文字列123,456,789では、fieldPositionの開始索引および終了索引がそれぞれ0および11に設定されます。- 戻り値:
- フォーマットされた数値文字列
- スロー:
NullPointerException-resultまたはfieldPositionがnullの場合ArithmeticException- 丸め処理が必要な場合に丸めモードがRoundingMode.UNNECESSARYに設定されているとき- 関連項目:
-
formatToCharacterIterator
public AttributedCharacterIterator formatToCharacterIterator(Object obj) Objectをフォーマットし、AttributedCharacterIteratorを生成します。 返されたAttributedCharacterIteratorを使用すると、結果のStringを構築できるとともに、結果のStringについての情報を判定できます。AttributedCharacterIteratorの各属性キーは
NumberFormat.Field型です。属性値は属性キーと同一です。- オーバーライド:
formatToCharacterIterator、クラスFormat- パラメータ:
obj- フォーマットするオブジェクト- 戻り値:
- フォーマットされた値を説明するAttributedCharacterIterator。
- スロー:
NullPointerException- objがnullの場合。IllegalArgumentException- 指定されたオブジェクトをFormatでフォーマットできない場合。ArithmeticException- 丸め処理が必要な場合に丸めモードがRoundingMode.UNNECESSARYに設定されているとき- 導入されたバージョン:
- 1.4
-
parse
public Number parse(String text, ParsePosition pos) 指定された文字列の先頭からテキストを解析して、Numberを生成します。このメソッドは、
ParsePositionで指定されたインデックスから始まるテキストを解析しようとします。 解析が成功すると、ParsePositionの索引は、最後に(解析では、必ずしも文字列の末尾までのすべての文字が使用されるわけではありません。)が使用された文字の後に索引に更新され、解析された番号が返されます。 更新されたParsePositionは、このメソッドへの次のコールの開始点を示すために使用できます。 エラーが発生した場合、ParsePositionの索引は変更されず、ParsePositionのエラー索引はエラーが発生した文字の索引に設定され、nullが返されます。このメソッドは、可能な場合はLongを(たとえば、[Long.MIN_VALUE, Long.MAX_VALUE]の範囲内および小数なし)、それ以外の場合はDoubleを返します。
解析は厳密または非厳密の方法で行うことができ、デフォルトでは非厳密です。
「非厳密」の場合、プリフィクスまたはサフィクス(あるいはその両方)が空でなく、早期に終了する解析のために見つからない場合、またはプリフィクスの後の最初の文字を解析できない場合、解析は失敗します。
strictが
textの場合、解析は失敗- プレフィクスが見つかりません。 たとえば、
Locale.US通貨書式プレフィクス: "$" - サフィクスが見つかりません。 たとえば、
Locale.USパーセント書式のサフィクス: "%" -
NumberFormat.isGroupingUsed()はtrueを戻し、getGroupingSize()は次に準拠していません -
NumberFormat.isGroupingUsed()はfalseを返し、グループ化記号が見つかりました -
NumberFormat.isGroupingUsed()はtrueを返し、グループ化記号は小数点の後に出現 - その他の文字は検出され、予期される記号ではなく、数値部分内に出現する数字ではありません
戻り値のサブクラスは、
isParseBigDecimal()の値と解析対象文字列によって決まります。isParseBigDecimal()がfalse (デフォルト値)の場合、整数値の大部分は、その記述形式にかかわらず、Longオブジェクトとして返されます。"17"と"17.000"はどちらも、Long(17)として解析されます。Longに当てはまらない値はDoubleとして返されます。 これには小数部分を持つ値、無限大の値、NaN、および値 -0.0などが含まれます。DecimalFormatは、Double、Longのいずれを返すかを、ソース文字列内での小数区切り文字の有無で判断するわけではありません。 かりにそうした場合は、"-9,223,372,036,854,775,808.00"などのdoubleの仮数をオーバーフローする整数を、正確に解析できなくなります。呼出し元は、
NumberのメソッドdoubleValueやlongValueを用いることで、値を必要な型として取得できます。isParseBigDecimal()がtrueの場合、値はBigDecimalオブジェクトとして返されます。 値は、ロケールに依存しない形式の対応する文字列に対して、BigDecimal(String)によって構築される値です。 ただし、特殊な値(正負の無限大やNaNなど)は、対応するDouble定数値を含むDoubleインスタンスとして返されます。
DecimalFormatは、Character.digit()で定義されている10進数字を表すすべてのUnicode文字を解析します。 さらにDecimalFormatは、DecimalFormatSymbolsオブジェクトで定義されているローカライズされたゼロ数字で始まる10個の連続した文字を数字として認識します。- 定義:
parse、クラスNumberFormat- パラメータ:
text- 解析される文字列pos- 上記のインデックスおよびエラー・インデックス情報を持つParsePositionオブジェクト- 戻り値:
- 解析された値。解析が失敗した場合は
null - スロー:
NullPointerException-textまたはposがnullの場合。- 関連項目:
- プレフィクスが見つかりません。 たとえば、
-
getDecimalFormatSymbols
public DecimalFormatSymbols getDecimalFormatSymbols()数値桁区切り文字のコピーを返します。これは通常、プログラマやユーザーによって変更されません。- 戻り値:
- 必要なDecimalFormatSymbolsのコピー
- 関連項目:
-
setDecimalFormatSymbols
public void setDecimalFormatSymbols(DecimalFormatSymbols newSymbols) 数値桁区切り文字を設定します。これは通常、プログラマやユーザーによって変更されません。- パラメータ:
newSymbols- 必要なDecimalFormatSymbols- 関連項目:
-
getPositivePrefix
-
setPositivePrefix
public void setPositivePrefix(String newValue) 正の接頭辞を設定します。例+123、$123、sFr123
- パラメータ:
newValue- 新しい正の接頭辞
-
getNegativePrefix
-
setNegativePrefix
public void setNegativePrefix(String newValue) 負の接頭辞を設定します。例-123、($123)(負の接尾辞付き)、sFr-123
- パラメータ:
newValue- 新しい負の接頭辞
-
getPositiveSuffix
-
setPositiveSuffix
-
getNegativeSuffix
-
setNegativeSuffix
-
getMultiplier
public int getMultiplier()パーセント、パーミル(1000)、およびその類似フォーマットで使用する乗数を取得します。- 戻り値:
- 乗数
- 関連項目:
-
setMultiplier
public void setMultiplier(int newValue) パーセント、パーミル(1000)、およびその類似フォーマットで使用する乗数を設定します。 パーセントでは、乗数として100を、接尾辞として%を設定します(アラビア語では異なるパーセント記号を使用する)。 mille形式ごとに、乗数を1000に設定し、サフィクスを'U+2030'に設定します。例: 乗数100の場合、1.23のフォーマット結果は"123"、"123"の解析結果は1.23になる。
isParseIntegerOnly()がtrueを返す場合、"123"は1に解析されます。- パラメータ:
newValue- 新しい乗数- 関連項目:
-
getGroupingSize
public int getGroupingSize()グループ化サイズを返します。 グループ化サイズとは、数値の整数部分における区切り文字と区切り文字の間の桁数です。 たとえば、数値123,456.78の場合、グループ化サイズは3です。 グループ化サイズを0に設定すると、グループ化は使用されず、setGroupingUsed(false)をコールする場合と同じ書式設定が行われます。- 戻り値:
- グループ化サイズ
- 関連項目:
-
setGroupingSize
public void setGroupingSize(int newValue) グループ化サイズを設定します。 グループ化サイズとは、数値の整数部分における区切り文字と区切り文字の間の桁数です。 たとえば、数値123,456.78の場合、グループ化サイズは3です。 グループ化サイズを0に設定すると、グループ化は使用されず、setGroupingUsed(false)をコールする場合と同じ書式設定が行われます。引数として渡された値はバイトに変換されるため、情報が失われる可能性があります。
Byte.MAX_VALUE以上の負の値はIllegalArgumentExceptionをスローします。- パラメータ:
newValue- 新しいグループ化サイズ- スロー:
IllegalArgumentException-newValueが、負の数またはByte.MAX_VALUEより大きいか- 関連項目:
-
isDecimalSeparatorAlwaysShown
public boolean isDecimalSeparatorAlwaysShown()整数と区別する小数点の動作を取得します。 (小数位では小数点が常に表示される)。例: Decimal ON: 12345 → 12345.; OFF: 12345 → 12345
- 戻り値:
- 小数点区切り記号が常に表示される場合は
true、そうでない場合はfalse
-
setDecimalSeparatorAlwaysShown
public void setDecimalSeparatorAlwaysShown(boolean newValue) 整数と区別する小数点の動作を設定します。 (小数位では小数点が常に表示される)。例: Decimal ON: 12345 → 12345.; OFF: 12345 → 12345
- パラメータ:
newValue- 小数点区切り記号が常に表示される場合はtrue、そうでない場合はfalse
-
isStrict
public boolean isStrict()この書式で数値が厳密に解析される場合はtrue、それ以外の場合はfalseを返します。- オーバーライド:
- クラス
NumberFormatのisStrict - 戻り値:
- この書式で番号が厳密に解析される場合は
true、それ以外の場合はfalse - 導入されたバージョン:
- 23
- 関連項目:
-
setStrict
public void setStrict(boolean strict) 解析する非厳密値を変更します。 解析は厳密でも非厳密でもかまいません。デフォルトでは非厳密です。- オーバーライド:
- クラス
NumberFormatのsetStrict - パラメータ:
strict- 解析を厳密に実行する場合はtrue、それ以外の場合はfalse- 導入されたバージョン:
- 23
- 関連項目:
-
isParseBigDecimal
public boolean isParseBigDecimal()parse(java.lang.String, java.text.ParsePosition)メソッドがBigDecimalを返すかどうかを返します。 デフォルト値はfalseです。- 戻り値:
- この解析メソッドがBigDecimalを返す場合は
true、そうでない場合はfalse - 導入されたバージョン:
- 1.5
- 関連項目:
-
setParseBigDecimal
public void setParseBigDecimal(boolean newValue) parse(java.lang.String, java.text.ParsePosition)メソッドがBigDecimalを返すかどうかを設定します。- パラメータ:
newValue- この解析メソッドがBigDecimalを返す場合はtrue、そうでない場合はfalse- 導入されたバージョン:
- 1.5
- 関連項目:
-
clone
public Object clone()標準オーバーライドです。セマンティックスは変わりません。- オーバーライド:
clone、クラスNumberFormat- 戻り値:
- このインスタンスの複製。
- 関連項目:
-
equals
public boolean equals(Object obj) 指定されたオブジェクトをこのDecimalFormatと比較し、等しいかどうかを確認します。 オブジェクトがDecimalFormatでもあり、2つの書式で値が同じ書式である場合、trueを返します。- オーバーライド:
equals、クラスNumberFormat- 実装要件:
- このメソッドは、
instanceofではなく、getClass()に基づくクラス・アイデンティティの概念を使用して等価チェックを実行します。 したがって、サブクラスのequalsメソッドでは、このクラスのインスタンスはサブクラスのインスタンスと等しく比較されません。 - パラメータ:
obj- 等価性のために比較されるオブジェクト- 戻り値:
- 指定されたオブジェクトがこの
DecimalFormatと等しい場合はtrue - 関連項目:
-
hashCode
public int hashCode()このDecimalFormatのハッシュ・コードを返します。- オーバーライド:
hashCode、クラスNumberFormat- 実装要件:
- このメソッドは、
getPositivePrefix()およびNumberFormat.hashCode()から返された値を使用してハッシュ・コード値を計算します。 - 戻り値:
- この
DecimalFormatのハッシュ・コード - 関連項目:
-
toString
-
toPattern
-
toLocalizedPattern
public String toLocalizedPattern()このFormatオブジェクトの現在の状態を表すローカライズされたパターン文字列を総合します。- 戻り値:
- ローカライズされたパターン文字
- 関連項目:
-
applyPattern
public void applyPattern(String pattern) 指定されたパターンをこのFormatオブジェクトに適用します。 パターンとは、各種のフォーマット特性に対する簡略仕様です。 これらの特性は、各設定機能メソッドで個別に変更することもできます。通常、最大整数の桁数はパターンから導出されません。 詳細は、
Patternsの項のノートを参照してください。 負の数値の場合は、セミコロンで区切った2つめのパターンを使用します。例
"#,#00.0#"→ 1,234.56これは、最小2桁の整数、1つの小数点、最大2桁の小数を意味します。
例:
"#,#00.0#;(#,#00.0#)"(負の数値は括弧で囲む)。負のパターンでは、最小と最大の桁数は無視されます。これらは、正のパターンで設定されるものと見なされます。
- パラメータ:
pattern- 新しいパターン- スロー:
NullPointerException-patternがnullである場合IllegalArgumentException- 指定されたパターンが無効な場合。
-
applyLocalizedPattern
public void applyLocalizedPattern(String pattern) 指定されたパターンをこのFormatオブジェクトに適用します。 このパターンの表記は、ローカライズされているものと見なされます。 パターンとは、各種のフォーマット特性に対する簡略仕様です。 これらの特性は、各設定機能メソッドで個別に変更することもできます。通常、最大整数の桁数はパターンから導出されません。 詳細は、
Patternsの項のノートを参照してください。 負の数値の場合は、セミコロンで区切った2つめのパターンを使用します。例
"#,#00.0#"→ 1,234.56これは、最小2桁の整数、1つの小数点、最大2桁の小数を意味します。
例:
"#,#00.0#;(#,#00.0#)"(負の数値は括弧で囲む)。負のパターンでは、最小と最大の桁数は無視されます。これらは、正のパターンで設定されるものと見なされます。
- パラメータ:
pattern- 新しいパターン- スロー:
NullPointerException-patternがnullである場合IllegalArgumentException- 指定されたパターンが無効な場合。
-
setMaximumIntegerDigits
public void setMaximumIntegerDigits(int newValue) 数値の整数部分の最大桁数を設定します。 負の入力値は0に置き換えられます。- オーバーライド:
setMaximumIntegerDigits、クラスNumberFormat- パラメータ:
newValue- 整数の最大表示桁数。0より小さい場合は0が使用される。 具象サブクラスでは、この値の上限を、フォーマットされる数値の種類に適した値に強制できる。- 関連項目:
-
setMinimumIntegerDigits
public void setMinimumIntegerDigits(int newValue) 数値の整数部分の最小桁数を設定します。 負の入力値は0に置き換えられます。- オーバーライド:
setMinimumIntegerDigits、クラスNumberFormat- パラメータ:
newValue- 整数の最小表示桁数。0より小さい場合は0が使用される。 具象サブクラスでは、この値の上限を、フォーマットされる数値の種類に適した値に強制できる。- 関連項目:
-
setMaximumFractionDigits
public void setMaximumFractionDigits(int newValue) 数値の小数部分の最大桁数を設定します。 負の入力値は0に置き換えられます。- オーバーライド:
setMaximumFractionDigits、クラスNumberFormat- パラメータ:
newValue- 小数部の最大表示桁数。0より小さい場合は0が使用される。 具象サブクラスでは、この値の上限を、フォーマットされる数値の種類に適した値に強制できる。- 関連項目:
-
setMinimumFractionDigits
public void setMinimumFractionDigits(int newValue) 数値の小数部分の最小桁数を設定します。 負の入力値は0に置き換えられます。- オーバーライド:
setMinimumFractionDigits、クラスNumberFormat- パラメータ:
newValue- 小数部の最小表示桁数。0より小さい場合は0が使用される。 具象サブクラスでは、この値の上限を、フォーマットされる数値の種類に適した値に強制できる。- 関連項目:
-
getMaximumIntegerDigits
public int getMaximumIntegerDigits()数値の整数部分の最大桁数を取得します。 整数の最大桁数は、setMaximumIntegerDigits(int)またはapplyPattern(String)のいずれかで設定できます。 パターン内の最大整数桁数に関する包括的なルールについては、Pattern Sectionを参照してください。- オーバーライド:
getMaximumIntegerDigits、クラスNumberFormat- 戻り値:
- 最大桁数
- 関連項目:
-
getMinimumIntegerDigits
public int getMinimumIntegerDigits()数値の整数部分の最小桁数を取得します。- オーバーライド:
getMinimumIntegerDigits、クラスNumberFormat- 戻り値:
- 最小桁数
- 関連項目:
-
getMaximumFractionDigits
public int getMaximumFractionDigits()数値の小数部分の最大桁数を取得します。- オーバーライド:
getMaximumFractionDigits、クラスNumberFormat- 戻り値:
- 最大桁数。
- 関連項目:
-
getMinimumFractionDigits
public int getMinimumFractionDigits()数値の小数部分の最小桁数を取得します。- オーバーライド:
getMinimumFractionDigits、クラスNumberFormat- 戻り値:
- 最小桁数
- 関連項目:
-
getCurrency
public Currency getCurrency()通貨値のフォーマット時に、この10進フォーマットが使用する通貨を取得します。 この通貨は、この数値フォーマットの記号に対してDecimalFormatSymbols.getCurrencyを呼び出すことで取得されます。- オーバーライド:
getCurrency、クラスNumberFormat- 戻り値:
- この10進フォーマットで使用される通貨、または
null - 導入されたバージョン:
- 1.4
-
setCurrency
public void setCurrency(Currency currency) 通貨値のフォーマット時に、この数値フォーマットが使用する通貨を設定します。 これは、数値フォーマットが使用する最小小数桁数または最大小数桁数を更新するものではありません。 この通貨は、この数値フォーマットの記号に対してDecimalFormatSymbols.setCurrencyを呼び出すことで設定されます。- オーバーライド:
setCurrency、クラスNumberFormat- パラメータ:
currency- この10進フォーマットで使用する新しい通貨- スロー:
NullPointerException-currencyがnullである場合- 導入されたバージョン:
- 1.4
-
getRoundingMode
public RoundingMode getRoundingMode()このDecimalFormatで使用されるRoundingModeを取得します。- オーバーライド:
getRoundingMode、クラスNumberFormat- 戻り値:
- このDecimalFormatに使用される
RoundingMode。 - 導入されたバージョン:
- 1.6
- 関連項目:
-
setRoundingMode
public void setRoundingMode(RoundingMode roundingMode) このDecimalFormatで使用されるRoundingModeを設定します。- オーバーライド:
setRoundingMode、クラスNumberFormat- パラメータ:
roundingMode- 使用されるRoundingMode- スロー:
NullPointerException-roundingModeがnullである場合。- 導入されたバージョン:
- 1.6
- 関連項目:
-