全パッケージ  クラス階層  このパッケージ  前項目  次項目  インデックス

クラス java.text.DecimalFormat

java.lang.Object
   |
   +----java.text.Format
           |
           +----java.text.NumberFormat
                   |
                   +----java.text.DecimalFormat

public class DecimalFormat
extends NumberFormat
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)が連続しているローカル化された数字だけを扱います。その他の数字セット(スーパースクリプトなど)には、別のサブクラスが必要です。

参照:
Format, NumberFormat, ChoiceFormat

Constructor Index

 o DecimalFormat()
デフォルトロケールに対するデフォルトのパターンと記号を使って DecimalFormatを作成します。
 o DecimalFormat(String)
デフォルトロケールに対する指定のパターンと記号から DecimalFormatを作成します。
 o DecimalFormat(String, DecimalFormatSymbols)
指定のパターンと記号から DecimalFormatを作成します。

Method Index

 o applyLocalizedPattern(String)
指定するパターンをこの Formatオブジェクトに適用します。
 o applyPattern(String)
指定するパターンをこの Formatオブジェクトに適用します。
 o clone()
標準オーバーライド。セマンティクッスは変わりません。
 o equals(Object)
equalsをオーバーライドします。
 o format(double, StringBuffer, FieldPosition)
フォーマットの特殊化。
 o format(long, StringBuffer, FieldPosition)
フォーマットの特殊化。
 o getDecimalFormatSymbols()
10進フォーマット記号を返します。これは、一般に、プログラマやユーザによって変更されません。
 o getGroupingSize()
グループ化サイズを返します。
 o getMultiplier()
パーセントやパーミリ(1000)などで使用する掛け数を入手します。
 o getNegativePrefix()
負の接頭部を入手します。
 o getNegativeSuffix()
負の接尾部を入手します。
 o getPositivePrefix()
正の接頭部を入手します。
 o getPositiveSuffix()
正の接尾部を入手します。
 o hashCode()
hashCodeをオーバーライドします。
 o isDecimalSeparatorAlwaysShown()
整数と区別する小数点の動作を入手することができます。
 o parse(String, ParsePosition)
可能ならば Long を返し(例えば、[Long.MIN_VALUE, Long.MAX_VALUE] 範囲内で 10 進数なし)、そうでなければ Double を返します。
 o setDecimalFormatSymbols(DecimalFormatSymbols)
10進フォーマット記号を設定します。これは、一般に、プログラマやユーザによって変更されません。
 o setDecimalSeparatorAlwaysShown(boolean)
整数と区別する小数点の動作を設定することができます。
 o setGroupingSize(int)
グループ化のサイズを設定します。
 o setMultiplier(int)
パーセントやパーミリ(1000)などで使用する掛け数を設定します。
 o setNegativePrefix(String)
負の接頭部を設定します。
 o setNegativeSuffix(String)
負の接尾部を設定します。
 o setPositivePrefix(String)
正の接頭部を設定します。
 o setPositiveSuffix(String)
正の接尾部を設定します。
 o toLocalizedPattern()
この Formatオブジェクトの現在の状態を表すローカル化パーターン文字列を総合します。
 o toPattern()
この Formatオブジェクトの現在の状態を表すパーターン文字列を総合します。

Constructors

 o DecimalFormat
  public DecimalFormat()
デフォルトロケールに対するデフォルトのパターンと記号を使って DecimalFormatを作成します。これは、各国語化が大きな問題でなければ、DecimalFormatを得る便利な方法です。

指定するロケールに対する標準フォーマットを得るには、getNumberInstanceなど、NumberFormat のファクトリメソッドを使用してください。これらのファクトリメソッドは、指定するロケールに対する NumberFormatの最適なサブクラスを返します。

参照:
getInstance, getNumberInstance, getCurrencyInstance, getPercentInstance
 o DecimalFormat
  public DecimalFormat(String pattern)
デフォルトロケールに対する指定のパターンと記号から DecimalFormatを作成します。これは、各国語化が大きな問題でなければ、DecimalFormatを得る便利な方法です。

指定するロケールに対する標準フォーマットを得るには、getNumberInstanceなど、NumberFormat のファクトリメソッドを使用してください。これらのファクトリメソッドは、指定するロケールに対する NumberFormatの最適なサブクラスを返します。

パラメータ:
pattern - 非ローカル化パターン文字列
例外: IllegalArgumentException
指定したパターンが正しくない場合
参照:
getInstance, getNumberInstance, getCurrencyInstance, getPercentInstance
 o DecimalFormat
  public DecimalFormat(String pattern,
                       DecimalFormatSymbols symbols)
指定するパターンと記号から DecimalFormatを作成します。フォーマットの動作を完全にカストマイズする必要がある場合には、この構築子を使ってください。 これは、各国語化が大きな問題でなければ、DecimalFormatを得る便利な方法です。

指定するロケールに対する標準フォーマットを得るには、getInstanceや getCurrencyInstanceなど、NumberFormat のファクトリメソッドを使用してください。標準フォーマットをわずかに調整するだけであれば、NumberFormatファクトリメソッドで返されたフォーマットを修正することができます。

パラメータ:
pattern - 非ローカル化パターン文字列
symbols - 使用する記号セット
例外: IllegalArgumentException
指定したパターンが正しくない場合
参照:
getInstance, getNumberInstance, getCurrencyInstance, getPercentInstance, DecimalFormatSymbols

Methods

 o format
  public StringBuffer format(double number,
                             StringBuffer result,
                             FieldPosition fieldPosition)
フォーマットの特殊化。

オーバーライド:
クラス NumberFormatformat
 o format
  public StringBuffer format(long number,
                             StringBuffer result,
                             FieldPosition fieldPosition)
フォーマットの特殊化。

オーバーライド:
クラス NumberFormatformat
 o parse
  public Number parse(String text,
                      ParsePosition status)
可能ならば Long を返し(例えば、[Long.MIN_VALUE, Long.MAX_VALUE] 範囲内で 10 進数なし)、そうでなければ Double を返します。

オーバーライド:
クラス NumberFormatparse
 o getDecimalFormatSymbols
  public DecimalFormatSymbols getDecimalFormatSymbols()
10進フォーマット記号を返します。これは通常、プログラマやユーザによって変更されません。

返り値:
desired DecimalFormatSymbols
参照:
DecimalFormatSymbols
 o setDecimalFormatSymbols
  public void setDecimalFormatSymbols(DecimalFormatSymbols newSymbols)
10進フォーマット記号を設定します。これは通常、プログラマやユーザによって変更されません。

パラメータ:
newSymbols - 必要な DecimalFormatSymbols
参照:
DecimalFormatSymbols
 o getPositivePrefix
  public String getPositivePrefix()
正の接頭部を入手します。

例: +123, $123, sFr123

 o setPositivePrefix
  public void setPositivePrefix(String newValue)
正の接頭部を設定します。

例: +123, $123, sFr123

 o getNegativePrefix
  public String getNegativePrefix()
負の接頭部を入手します。

例: -123, ($123) (負の接尾部付き), sFr-123

 o setNegativePrefix
  public void setNegativePrefix(String newValue)
負の接頭部を設定します。

例: -123, ($123) (負の接尾部付き), sFr-123

 o getPositiveSuffix
  public String getPositiveSuffix()
正の接尾部を入手します。

例: 123%

 o setPositiveSuffix
  public void setPositiveSuffix(String newValue)
正の接尾部を設定します。

例: 123%

 o getNegativeSuffix
  public String getNegativeSuffix()
負の接尾部を入手します。

例: -123%, ($123) (正の接尾部付き)

 o setNegativeSuffix
  public void setNegativeSuffix(String newValue)
負の接尾部を設定します。

例: 123%

 o getMultiplier
  public int getMultiplier()
パーセントやパーミリ(1000)などで使用する掛け数を入手します。パーセントでは、接尾部として "%"を、掛け数として 100を設定します(アラビア語では、グラフィックのパーセント記号を使用する)。パーミリでは、接尾部として "?"を、掛け数として 1000を設定します。

例: 100の場合、1.23 -> "123"、"123" -> 1.23

 o setMultiplier
  public void setMultiplier(int newValue)
パーセントやパーミリ(1000)などで使用する掛け数を設定します。パーセントでは、接尾部として "%"を、掛け数として 100を設定します(アラビア語では、グラフィックのパーセント記号を使用する)。パーミリでは、接尾部として "?"を、掛け数として 1000を設定します。

例: 100の場合、1.23 -> "123"、"123" -> 1.23

 o getGroupingSize
  public int getGroupingSize()
グループ化サイズを返します。グループ化サイズとは、数値の整数部分におけるセパレータとセパレータの間の桁数です。たとえば、数値 "123,456.78"の場合、グループ化サイズは 3です。

参照:
setGroupingSize, isGroupingUsed, getGroupingSeparator
 o setGroupingSize
  public void setGroupingSize(int newValue)
グループ化サイズを設定します。グループ化サイズとは、数値の整数部分におけるセパレータとセパレータの間の桁数です。たとえば、数値 "123,456.78"の場合、グループ化サイズは 3です。

参照:
getGroupingSize, setGroupingUsed, setGroupingSeparator
 o isDecimalSeparatorAlwaysShown
  public boolean isDecimalSeparatorAlwaysShown()
整数と区別する小数点の動作を入手することができます。(小数位では小数点が常に表示されます。)

例: Decimal ON: 12345 -> 12345.; OFF: 12345 -> 12345

 o setDecimalSeparatorAlwaysShown
  public void setDecimalSeparatorAlwaysShown(boolean newValue)
整数と区別する小数点の動作を設定することができます。(小数位では小数点が常に表示されます。)

例: Decimal ON: 12345 -> 12345.; OFF: 12345 -> 12345

 o clone
  public Object clone()
標準オーバーライド、セマンティックスは変わりません。

オーバーライド:
クラス NumberFormatclone
 o equals
  public boolean equals(Object obj)
equals をオーバーライドします。

オーバーライド:
クラス NumberFormatequals
 o hashCode
  public int hashCode()
hashCodeをオーバーライドします。

オーバーライド:
クラス NumberFormathashCode
 o toPattern
  public String toPattern()
この Formatオブジェクトの現在の状況を表すパターン文字列を総合します。

参照:
applyPattern
 o toLocalizedPattern
  public String toLocalizedPattern()
この Formatオブジェクトの現在の状況を表すラーカル化されたパターン文字列を総合します。

参照:
applyPattern
 o applyPattern
  public void applyPattern(String pattern)
指定するパターンをこの Formatオブジェクトに適用します。パターンとは、いろいろなフォーマット化特性に対する簡略仕様です。これらの特性は、いろいろな設定機能メソッドで個別に変更することもできます。

このルーチンで設定される整数の桁数に制限はありません。これが一般に、エンドユーザの要求だからです。実際の値を設定したい場合は、setMaximumIntegerを使用してください。負の数値の場合は、セミコロンで区切った 2つめのパターンを使用します。

例 "#,#00.0#" -> 1,234.56

これは、最小 2桁の整数、1つの小数点、最大 2桁の小数位を意味します。

例: "#,#00.0#;(#,#00.0#)"(負の数値用はかっこで囲む)

負のパターンでは、最小と最大の桁数は無視されます。これらは、正のパターンで設定されるものとみなされます。

 o applyLocalizedPattern
  public void applyLocalizedPattern(String pattern)
指定するパターンをこの Formatオブジェクトに適用します。このパターンの表記は、ローカル化されているものとみなされます。パターンとは、いろいろなフォーマット化特性に対する簡略仕様です。これらの特性は、いろいろな設定機能メソッドで個別に変更することもできます。

このルーチンで設定される整数の桁数に制限はありません。これが一般に、エンドユーザの要求だからです。実際の値を設定したい場合は、setMaximumIntegerを使用してください。負の数値の場合は、セミコロンで区切った 2つめのパターンを使用します。

例 "#,#00.0#" -> 1,234.56

これは、最小 2桁の整数、1つの小数点、最大 2桁の小数位を意味します。

例: "#,#00.0#;(#,#00.0#)"(負の数値用はかっこで囲む)

負のパターンでは、最小と最大の桁数は無視されます。これらは、正のパターンで設定されるものとみなされます。


全パッケージ  クラス階層  このパッケージ  前項目  次項目  インデックス