クラス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 0
DecimalFormatSymbols.getZeroDigit()
数値 数字 #
DecimalFormatSymbols.getDigit()
数値 数字。ゼロだと表示されない .
DecimalFormatSymbols.getDecimalSeparator()
数値 数値桁区切り子または通貨桁区切り子 - (U+002D)
DecimalFormatSymbols.getMinusSign()
数値 負符号 ,
DecimalFormatSymbols.getGroupingSeparator()
数値 グループ化セパレータまたは通貨グループ化セパレータ E
DecimalFormatSymbols.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を作成します。 -
メソッドのサマリー
修飾子と型メソッド説明void
applyLocalizedPattern
(String pattern) 指定されたパターンをこのFormatオブジェクトに適用します。void
applyPattern
(String pattern) 指定されたパターンをこのFormatオブジェクトに適用します。clone()
標準オーバーライドです。セマンティックスは変わりません。boolean
指定されたオブジェクトをこのDecimalFormat
と比較し、等しいかどうかを確認します。format
(double number, StringBuffer result, FieldPosition fieldPosition) doubleをフォーマットして文字列を作成します。format
(long number, StringBuffer result, FieldPosition fieldPosition) longをフォーマットして文字列を作成します。final StringBuffer
format
(Object number, StringBuffer toAppendTo, FieldPosition pos) 数値をフォーマットし、その結果のテキストを指定された文字列バッファに追加します。Objectをフォーマットし、AttributedCharacterIterator
を生成します。通貨値のフォーマット時に、この10進フォーマットが使用する通貨を取得します。数値桁区切り文字のコピーを返します。これは通常、プログラマやユーザーによって変更されません。int
グループ化サイズを返します。int
数値の小数部分の最大桁数を取得します。int
数値の整数部分の最大桁数を取得します。int
数値の小数部分の最小桁数を取得します。int
数値の整数部分の最小桁数を取得します。int
パーセント、パーミル(1000)、およびその類似フォーマットで使用する乗数を取得します。負の接頭辞を取得します。負の接尾辞を取得します。正の接頭辞を取得します。正の接尾辞を取得します。このDecimalFormatで使用されるRoundingMode
を取得します。int
hashCode()
このDecimalFormat
のハッシュ・コードを返します。boolean
整数と区別する小数点の動作を取得します。boolean
parse(java.lang.String, java.text.ParsePosition)
メソッドがBigDecimal
を返すかどうかを返します。boolean
isStrict()
この書式で数値が厳密に解析される場合はtrue
、それ以外の場合はfalse
を返します。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) パーセント、パーミル(1000)、およびその類似フォーマットで使用する乗数を設定します。void
setNegativePrefix
(String newValue) 負の接頭辞を設定します。void
setNegativeSuffix
(String newValue) 負の接尾辞を設定します。void
setParseBigDecimal
(boolean newValue) parse(java.lang.String, java.text.ParsePosition)
メソッドがBigDecimal
を返すかどうかを設定します。void
setPositivePrefix
(String newValue) 正の接頭辞を設定します。void
setPositiveSuffix
(String newValue) 正の接尾辞を設定します。void
setRoundingMode
(RoundingMode roundingMode) このDecimalFormatで使用されるRoundingMode
を設定します。void
setStrict
(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を得るためには簡単な方法です。指定されたロケールに対する標準フォーマットを得るには、getNumberInstanceなど、NumberFormatのファクトリ・メソッドを使用してください。 これらのファクトリ・メソッドは、指定されたロケールに対するNumberFormatの最適なサブクラスを返します。
- 関連項目:
-
DecimalFormat
public DecimalFormat(String pattern) デフォルトのFORMAT
ロケールに対して、指定されたパターンと記号を使ってDecimalFormatを作成します。 これは、国際化が主要な問題でない場合は、DecimalFormatを得るためには簡単な方法です。 通常、最大整数の桁数はパターンから導出されません。 詳細は、Patterns
の項のノートを参照してください。指定されたロケールに対する標準フォーマットを得るには、getNumberInstanceなど、NumberFormatのファクトリ・メソッドを使用してください。 これらのファクトリ・メソッドは、指定されたロケールに対するNumberFormatの最適なサブクラスを返します。
- パラメータ:
pattern
- ローカライズされていないパターン文字列。- 例外:
NullPointerException
-pattern
がnullである場合IllegalArgumentException
- 指定されたパターンが無効な場合。- 関連項目:
-
DecimalFormat
public DecimalFormat(String pattern, DecimalFormatSymbols symbols) 指定されたパターンと記号を使ってDecimalFormatを作成します。 フォーマットの動作を完全にカスタマイズする必要がある場合には、このコンストラクタを使ってください。 通常、最大整数の桁数はパターンから導出されません。 詳細は、Patterns
の項のノートを参照してください。指定されたロケールに対する標準フォーマットを得るには、getInstanceやgetCurrencyInstanceなど、NumberFormatのファクトリ・メソッドを使用してください。 標準フォーマットをわずかに調整するだけであれば、NumberFormatファクトリ・メソッドで返されたフォーマットを修正することができます。
- パラメータ:
pattern
- ローカライズされていないパターン文字列symbols
- 使用する記号セット- 例外:
NullPointerException
- 指定された引数が1つでもnullの場合IllegalArgumentException
- 指定されたパターンが無効な場合- 関連項目:
-
-
メソッドの詳細
-
format
public final StringBuffer format(Object number, StringBuffer toAppendTo, FieldPosition pos) - オーバーライド:
format
、クラスNumberFormat
- パラメータ:
number
- フォーマットする数値toAppendTo
- フォーマット後のテキストを追加するStringBuffer
pos
- 返された文字列内のフィールドの位置を追跡します。 たとえば、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.isParseIntegerOnly()
はtrue
を返し、小数点が見つかります -
NumberFormat.isGroupingUsed()
はtrue
を返し、NumberFormat.isParseIntegerOnly()
はfalse
を返し、グループ化記号は小数点の後に出現 - その他の文字は検出され、予期される記号ではなく、数値部分内に出現する数字ではありません
戻り値のサブクラスは、
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になる。
- パラメータ:
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
- 関連項目:
-