全パッケージ クラス階層 このパッケージ 前項目 次項目 インデックス
java.lang.Object | +----java.text.Format | +----java.text.NumberFormat | +----java.text.DecimalFormat
DecimalFormat
は、10進数値をフォーマットするための NumberFormat
の concreteサブクラスです。このクラスでは、さまざまなパラメータが使用でき、西欧、アラビア、インドの数字へのローカル化が可能です。
通常、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'* '#'* Notation: X* x の 0 またはそれ以上のインスタンス (X | Y) X か Y. X..Y X から Y までの任意の文字 S - T S の中の文字。ただし、T の中のものは除く。最初のサブパターンは正の数値用です。2つめ(任意指定)のサブパターンは、負の数値用です。(どちらの場合も、整数部分に ','があります。BNFに示すと、非常に複雑になります。)
下記に示すのは、サブパターンのあちこちで使用される特殊文字です。それらの使用法も示します。
記号 意味 0 数字 # 数字、ゼロだと表示されない。 . 小数セパレータの場所 , グループセパレータの場所 ; フォーマットを区切る。 - デフォルトの負接頭部 % 100 で割る。パーセントとして表示される。 X 接頭部や接尾部にはその他の任意の文字が使用できる。 ' 接頭部や接尾部で特殊文字を引用するときに使用する。
注
明示的な負のサブパターンがないと、- が正形式の前に付けられます。つまり、"0.00"単独は、"0.00;-0.00"と同じです。
"#.#.#"や、同じフォーマットに '_' と '*' を混在する場合など、フォーマットが正しくないと、ParseException
がスローされます。この ParseException
を調べれば、文字列の中のエラーがあった場所を見つけることができます。
グループ化セパレータは一般に 1000で使用しますが、国によっては 10000で使用するところもあります。この間隔は、100,000,000 や 1,0000,0000 のように、グループ化文字の間の一定数の桁数です。複数のグループ化文字をもつパターンを指定すると、最後の文字と整数の終わりの間が、この間隔として使用されます。したがって、"#,##,###,####" == "######,####" == "##,####,####"となります。
このクラスは、Unicodeで 10 個の数字(0 から 9)が連続しているローカル化された数字だけを扱います。その他の数字セット(スーパースクリプトなど)には、別のサブクラスが必要です。
public DecimalFormat()
指定するロケールに対する標準フォーマットを得るには、getNumberInstanceなど、NumberFormat のファクトリメソッドを使用してください。これらのファクトリメソッドは、指定するロケールに対する NumberFormatの最適なサブクラスを返します。
public DecimalFormat(String pattern)
指定するロケールに対する標準フォーマットを得るには、getNumberInstanceなど、NumberFormat のファクトリメソッドを使用してください。これらのファクトリメソッドは、指定するロケールに対する NumberFormatの最適なサブクラスを返します。
public DecimalFormat(String pattern, DecimalFormatSymbols symbols)
指定するロケールに対する標準フォーマットを得るには、getInstanceや getCurrencyInstanceなど、NumberFormat のファクトリメソッドを使用してください。標準フォーマットをわずかに調整するだけであれば、NumberFormatファクトリメソッドで返されたフォーマットを修正することができます。
public StringBuffer format(double number, StringBuffer result, FieldPosition fieldPosition)
public StringBuffer format(long number, StringBuffer result, FieldPosition fieldPosition)
public Number parse(String text, ParsePosition status)
public DecimalFormatSymbols getDecimalFormatSymbols()
public void setDecimalFormatSymbols(DecimalFormatSymbols newSymbols)
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()
public void setGroupingSize(int newValue)
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()
public String toLocalizedPattern()
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#)"(負の数値用はかっこで囲む)
負のパターンでは、最小と最大の桁数は無視されます。これらは、正のパターンで設定されるものとみなされます。
全パッケージ クラス階層 このパッケージ 前項目 次項目 インデックス