JavaTM 2 Platform
Std. Ed. v1.3

java.text
クラス NumberFormat

java.lang.Object
  |
  +--java.text.Format
        |
        +--java.text.NumberFormat
すべての実装インタフェース:
Cloneable, Serializable
直系の既知のサブクラス:
ChoiceFormat, DecimalFormat

public abstract class NumberFormat
extends Format

NumberFormat は、すべての数値フォーマットに対する abstract 基底クラスです。このクラスは、数値のフォーマットと解析のためのインタフェースです。さらに NumberFormat は、数値フォーマットがどのロケールにあり、その名前が何であるかを知るためのメソッドを提供します。

NumberFormat を使うと、任意のロケールの数値を簡単にフォーマットしたり解析したりできるようになります。ユーザのコードは、10 進数の小数点、1000 の区切り、使用する特定の 10 進数字に対するロケールのルールだけでなく、数字フォーマットが 10 進数かどうかということからさえも、完全に独立しています。

現行ロケールの数値をフォーマットする場合は、ファクトリクラスメソッドの 1 つを使用します。

  myString = NumberFormat.getInstance().format(myNumber);
 
複数の数値をフォーマットする場合には、そのフォーマットを取得して、それを複数回使う方が効率的です。そうすれば、ローカルの言語と国のルールをシステムが複数回取得する必要がありません。
 NumberFormat nf = NumberFormat.getInstance();
 for (int i = 0; i < a.length; ++i) {
     output.println(nf.format(myNumber[i]) + "; ");
 }
 
異なるロケールの数値をフォーマットする場合は、getInstance を呼び出すときにそれを指定します。
 NumberFormat nf = NumberFormat.getInstance(Locale.FRENCH);
 
さらに、NumberFormat を使って数値を解析することができます。
 myNumber = nf.parse(myString);
 
通常の数値フォーマットを得るには、getInstancegetNumberInstance を使用します。通貨数値フォーマットを得るには、getCurrencyInstance を使用します。そして、パーセントを表示するフォーマットを得るには、getPercentInstance を使用します。このフォーマットを使うと、0.53 などの小数点以下は 53% のように表示されます。

さらに、setMinimumFractionDigits などのメソッドを使えば、数値の表示を制御することができます。フォーマットや解析をさらに制御したい場合、あるいはこのような制御をユーザが使えるようにしたい場合は、ファクトリメソッドから得られる NumberFormatDecimalNumberFormat にキャストすることもできます。これはほとんどのロケールで有効ですが、有効にならないロケールの場合に備えて、これは try ブロックに指定してください。

NumberFormat と DecimalFormat は、フォーマットを制御するものと解析を制御するものがあるように設計されています。次に、これらの制御メソッドについて詳細に説明します。

setParseIntegerOnly は解析のみに作用します。たとえば、true の場合は、"3456.78" -> 3456 (解析位置をインデックス 6 の直後にそのまま残しておく) となります。false の場合は、"3456.78" -> 3456.78 (解析位置をインデックス 8 の直後にそのまま残しておく) となります。これはフォーマットに依存しません。小数点以下の桁がない場合に小数点を表示しないときは、setDecimalSeparatorAlwaysShown を使います。

setDecimalSeparatorAlwaysShown はフォーマットのみに作用します。ただし、"#,##0.##" のようなパターンで、小数点以下の桁がない場合に限ります。たとえば、true の場合、3456.00 -> "3,456." となります。false の場合、3456.00 -> "3456" となります。これは解析に依存しません。小数点で解析を停止する場合は、setParseIntegerOnly を使います。

さらに、parseformat メソッドの形式を ParsePositionFieldPosition とともに使用すれば、次のことが可能です。

たとえば、複数の数値を 2 つの方法で位置合わせすることができます。
  1. モノスペースフォントを使い、位置合わせにスペースを入れる場合には、フォーマット呼び出しで FieldPosition を渡すことができます。このとき、field = INTEGER_FIELD とします。出力では、getEndIndex が、整数の最後の文字と小数点の間のオフセットに設定されます。文字列の前に (desiredSpaceCount - getEndIndex) のスペースを追加してください。
  2. プロポーショナルフォントを使う場合には、スペースを追加する代わりに、文字列の幅をその始めから getEndIndex までピクセル単位で測ります。次に、テキストを描く前に、(desiredPixelWidth - widthToAlignmentPoint) だけペンを移動します。これは、小数点を扱うことはできませんが、終わりに追加の文字がある場合にも有効です。たとえば、-12 を "(12)" にするように、負の数に括弧を付ける場合です。

関連項目:
DecimalFormat, ChoiceFormat, 直列化された形式

フィールドの概要
static int FRACTION_FIELD
          FieldPosition オブジェクトを構築するためのフィールド定数です。
static int INTEGER_FIELD
          FieldPosition オブジェクトを構築するためのフィールド定数です。
 
コンストラクタの概要
NumberFormat()
           
 
メソッドの概要
 Object clone()
          Cloneable をオーバーライドします。
 boolean equals(Object obj)
          equals をオーバーライドします。
 String format(double number)
          フォーマットの特殊化です。
abstract  StringBuffer format(double number, StringBuffer toAppendTo, FieldPosition pos)
          フォーマットの特殊化です。
 String format(long number)
          フォーマットの特殊化です。
abstract  StringBuffer format(long number, StringBuffer toAppendTo, FieldPosition pos)
          フォーマットの特殊化です。
 StringBuffer format(Object number, StringBuffer toAppendTo, FieldPosition pos)
          オブジェクトをフォーマットして文字列を作成します。
static Locale[] getAvailableLocales()
          NumberFormat が導入されているロケールセットを取得します。
static NumberFormat getCurrencyInstance()
          現在のデフォルトロケールに対する通貨フォーマットを返します。
static NumberFormat getCurrencyInstance(Locale inLocale)
          指定されたロケールに対する通貨フォーマットを返します。
static NumberFormat getInstance()
          現在のデフォルトロケールに対するデフォルトの数値フォーマットを返します。
static NumberFormat getInstance(Locale inLocale)
          指定されたロケールに対するデフォルトの数値フォーマットを返します。
 int getMaximumFractionDigits()
          数値の小数部分として可能な最大桁数を返します。
 int getMaximumIntegerDigits()
          数値の整数部分として可能な最大桁数を返します。
 int getMinimumFractionDigits()
          数値の小数部分として可能な最小桁数を返します。
 int getMinimumIntegerDigits()
          数値の整数部分として可能な最小桁数を返します。
static NumberFormat getNumberInstance()
          現在のデフォルトロケールに対する汎用数値フォーマットを返します。
static NumberFormat getNumberInstance(Locale inLocale)
          指定されたロケールに対する汎用数値フォーマットを返します。
static NumberFormat getPercentInstance()
          現在のデフォルトロケールに対するパーセントフォーマットを返します。
static NumberFormat getPercentInstance(Locale inLocale)
          指定されたロケールに対するパーセントフォーマットを返します。
 int hashCode()
          hashCode をオーバーライドします。
 boolean isGroupingUsed()
          このフォーマットでグループ化が使用される場合に、true を返します。
 boolean isParseIntegerOnly()
          このフォーマットが数値を整数としてのみ解析する場合に、true を返します。
 Number parse(String text)
          簡易メソッドです。
abstract  Number parse(String text, ParsePosition parsePosition)
          可能な場合 (たとえば、[Long.MIN_VALUE, Long.MAX_VALUE] の範囲で、小数部分がない場合) は Long を、そうでない場合は Double を返します。
 Object parseObject(String source, ParsePosition parsePosition)
          文字列を解析してオブジェクトを生成します。
 void setGroupingUsed(boolean newValue)
          このフォーマットでグループ化を使用するかどうかを設定します。
 void setMaximumFractionDigits(int newValue)
          数値の小数部分として可能な最大桁数を設定します。
 void setMaximumIntegerDigits(int newValue)
          数値の整数部分として可能な最大桁数を設定します。
 void setMinimumFractionDigits(int newValue)
          数値の小数部分として可能な最小桁数を設定します。
 void setMinimumIntegerDigits(int newValue)
          数値の整数部分として可能な最小桁数を返します。
 void setParseIntegerOnly(boolean value)
          数値を整数としてのみ解析するかどうかを設定します。
 
クラス java.text.Format から継承したメソッド
format, parseObject
 
クラス java.lang.Object から継承したメソッド
finalize, getClass, notify, notifyAll, toString, wait, wait, wait
 

フィールドの詳細

INTEGER_FIELD

public static final int INTEGER_FIELD
FieldPosition オブジェクトを構築するためのフィールド定数です。フォーマットされた数値の整数部分の位置を返すように指定します。
関連項目:
FieldPosition

FRACTION_FIELD

public static final int FRACTION_FIELD
FieldPosition オブジェクトを構築するためのフィールド定数です。フォーマットされた数値の小数部分の位置を返すように指定します。
関連項目:
FieldPosition
コンストラクタの詳細

NumberFormat

public NumberFormat()
メソッドの詳細

format

public final StringBuffer format(Object number,
                                 StringBuffer toAppendTo,
                                 FieldPosition pos)
オブジェクトをフォーマットして文字列を作成します。この汎用ルーチンによって、オブジェクトに対するさまざまな解析とフォーマットが可能になります。
オーバーライド:
クラス Format 内の format
パラメータ:
obj - フォーマットするオブジェクト
toAppendTo - テキストを追加する位置
pos - 入力の場合は位置合わせフィールド (必要な場合)。出力の場合は位置合わせフィールドのオフセット
戻り値:
toAppendTo として渡される値 (これによって、StringBuffer.append() と同じようにチェーンが可能になる)
例外:
IllegalArgumentException - 指定されたオブジェクトを Format でフォーマットできない場合
関連項目:
FieldPosition

parseObject

public final Object parseObject(String source,
                                ParsePosition parsePosition)
文字列を解析してオブジェクトを生成します。
オーバーライド:
クラス Format 内の parseObject
パラメータ:
source - 解析する文字列
parsePosition - 入力 - 出力パラメータ。入力では解析の開始位置。出力では、解析されていない最初の文字の位置
戻り値:
文字列から解析されたオブジェクト。エラーの場合は null を返す
関連項目:
ParsePosition

format

public final String format(double number)
フォーマットの特殊化です。
関連項目:
Format.format(java.lang.Object)

format

public final String format(long number)
フォーマットの特殊化です。
関連項目:
Format.format(java.lang.Object)

format

public abstract StringBuffer format(double number,
                                    StringBuffer toAppendTo,
                                    FieldPosition pos)
フォーマットの特殊化です。
関連項目:
Format.format(java.lang.Object)

format

public abstract StringBuffer format(long number,
                                    StringBuffer toAppendTo,
                                    FieldPosition pos)
フォーマットの特殊化です。
関連項目:
Format.format(java.lang.Object)

parse

public abstract Number parse(String text,
                             ParsePosition parsePosition)
可能な場合 (たとえば、[Long.MIN_VALUE, Long.MAX_VALUE] の範囲で、小数部分がない場合) は Long を、そうでない場合は Double を返します。IntegerOnly が設定されていると、小数点で止まります (または、それと同等のもの、たとえば、分数 "1 2/3" では 1 の後で止まる)。例外はスローしません。オブジェクトが解析できない場合、インデックスは変わりません。
関連項目:
isParseIntegerOnly(), Format.parseObject(java.lang.String, java.text.ParsePosition)

parse

public Number parse(String text)
             throws ParseException
簡易メソッドです。
例外:
ParseException - 指定された文字列が無効な場合
関連項目:
format(java.lang.Object, java.lang.StringBuffer, java.text.FieldPosition)

isParseIntegerOnly

public boolean isParseIntegerOnly()
このフォーマットが数値を整数としてのみ解析する場合に、true を返します。たとえば、英語ロケールで ParseIntegerOnly が true であれば、文字列 "1234." は、整数値 1234 として解析され、解析は文字 "." で止まります。この解析によって受け入れられる正確なフォーマットは、ロケールに依存し、NumberFormat のサブクラスによって決まります。

setParseIntegerOnly

public void setParseIntegerOnly(boolean value)
数値を整数としてのみ解析するかどうかを設定します。
関連項目:
isParseIntegerOnly()

getInstance

public static final NumberFormat getInstance()
現在のデフォルトロケールに対するデフォルトの数値フォーマットを返します。デフォルトのフォーマットは、他のファクトリメソッド getNumberInstance、getCurrencyInstance、または getPercentInstance で提供されるスタイルの 1 つです。正確には、どれであるかはロケールに依存します。

getInstance

public static NumberFormat getInstance(Locale inLocale)
指定されたロケールに対するデフォルトの数値フォーマットを返します。デフォルトのフォーマットは、他のファクトリメソッド getNumberInstance、getCurrencyInstance、または getPercentInstance で提供されるスタイルの 1 つです。正確には、どれであるかはロケールに依存します。

getNumberInstance

public static final NumberFormat getNumberInstance()
現在のデフォルトロケールに対する汎用数値フォーマットを返します。

getNumberInstance

public static NumberFormat getNumberInstance(Locale inLocale)
指定されたロケールに対する汎用数値フォーマットを返します。

getCurrencyInstance

public static final NumberFormat getCurrencyInstance()
現在のデフォルトロケールに対する通貨フォーマットを返します。

getCurrencyInstance

public static NumberFormat getCurrencyInstance(Locale inLocale)
指定されたロケールに対する通貨フォーマットを返します。

getPercentInstance

public static final NumberFormat getPercentInstance()
現在のデフォルトロケールに対するパーセントフォーマットを返します。

getPercentInstance

public static NumberFormat getPercentInstance(Locale inLocale)
指定されたロケールに対するパーセントフォーマットを返します。

getAvailableLocales

public static Locale[] getAvailableLocales()
NumberFormat が導入されているロケールセットを取得します。
戻り値:
使用可能なロケール

hashCode

public int hashCode()
hashCode をオーバーライドします。
オーバーライド:
クラス Object 内の hashCode
クラス java.lang.Object からコピーされたタグ:
戻り値:
このオブジェクトのハッシュコード値
関連項目:
Object.equals(java.lang.Object), Hashtable

equals

public boolean equals(Object obj)
equals をオーバーライドします。
オーバーライド:
クラス Object 内の equals
クラス java.lang.Object からコピーされたタグ:
パラメータ:
obj - 比較対象の参照オブジェクト
戻り値:
obj 引数に指定されたオブジェクトとこのオブジェクトが等しい場合は true、そうでない場合は false
関連項目:
Boolean.hashCode(), Hashtable

clone

public Object clone()
Cloneable をオーバーライドします。
オーバーライド:
クラス Format 内の clone
クラス java.lang.Object からコピーされたタグ:
戻り値:
このインスタンスの複製
例外:
CloneNotSupportedException - オブジェクトのクラスが Cloneable インタフェースをサポートしていない場合。clone メソッドをオーバーライドしたサブクラスも、インスタンスを複製できないことを示すためにこの例外をスローすることがある
OutOfMemoryError - 十分なメモリがない場合
関連項目:
Cloneable

isGroupingUsed

public boolean isGroupingUsed()
このフォーマットでグループ化が使用される場合に、true を返します。たとえば、英語ロケールでグループ化がオンのとき、数値 1234567 は、"1,234,567" のようにフォーマットされます。グループ区切り子と各グループのサイズは、ロケールに依存し、NumberFormat のサブクラスによって決まります。
関連項目:
setGroupingUsed(boolean)

setGroupingUsed

public void setGroupingUsed(boolean newValue)
このフォーマットでグループ化を使用するかどうかを設定します。
関連項目:
isGroupingUsed()

getMaximumIntegerDigits

public int getMaximumIntegerDigits()
数値の整数部分として可能な最大桁数を返します。
関連項目:
setMaximumIntegerDigits(int)

setMaximumIntegerDigits

public void setMaximumIntegerDigits(int newValue)
数値の整数部分として可能な最大桁数を設定します。maximumIntegerDigits は、minimumIntegerDigits 以上でなければなりません。maximumIntegerDigits の新しい値が maximumIntegerDigits の現在の値よりも小さい場合、minimumIntegerDigits もこの新しい値に設定されます。
パラメータ:
newValue - 整数の最大表示桁数。0 より小さい場合は 0 が使用される。具象サブクラスでは、この値の上限を、フォーマットされる数値の種類に適した値に強制できる
関連項目:
getMaximumIntegerDigits()

getMinimumIntegerDigits

public int getMinimumIntegerDigits()
数値の整数部分として可能な最小桁数を返します。
関連項目:
setMinimumIntegerDigits(int)

setMinimumIntegerDigits

public void setMinimumIntegerDigits(int newValue)
数値の整数部分として可能な最小桁数を返します。minimuIntegerDigits は、maximumIntegerDigits 以下でなければなりません。minimumIntegerDigits の新しい値が maximumIntegerDigits の現在の値よりも大きい場合、maximumIntegerDigits もこの新しい値に設定されます。
パラメータ:
newValue - 整数の最小表示桁数。0 より小さい場合は 0 が使用される。具象サブクラスでは、この値の上限を、フォーマットされる数値の種類に適した値に強制できる
関連項目:
getMinimumIntegerDigits()

getMaximumFractionDigits

public int getMaximumFractionDigits()
数値の小数部分として可能な最大桁数を返します。
関連項目:
setMaximumFractionDigits(int)

setMaximumFractionDigits

public void setMaximumFractionDigits(int newValue)
数値の小数部分として可能な最大桁数を設定します。maximumFractionDigits は、minimumFractionDigits 以上でなければなりません。maximumFractionDigits の新しい値が minimumFractionDigits の現在の値よりも小さい場合、minimumFractionDigits もこの新しい値に設定されます。
パラメータ:
newValue - 小数点の最大表示桁数。0 より小さい場合は 0 が使用される。具象サブクラスでは、この値の上限を、フォーマットされる数値の種類に適した値に強制できる
関連項目:
getMaximumFractionDigits()

getMinimumFractionDigits

public int getMinimumFractionDigits()
数値の小数部分として可能な最小桁数を返します。
関連項目:
setMinimumFractionDigits(int)

setMinimumFractionDigits

public void setMinimumFractionDigits(int newValue)
数値の小数部分として可能な最小桁数を設定します。minimumFractionDigits は、maximumFractionDigits 以下でなければなりません。minimumFractionDigits の新しい値が maximumFractionDigits の現在の値よりも大きい場合、maximumFractionDigits もこの新しい値に設定されます。
パラメータ:
newValue - 小数点の最小表示桁数。0 より小さい場合は 0 が使用される。具象サブクラスでは、この値の上限を、フォーマットされる数値の種類に適した値に強制できる
関連項目:
getMinimumFractionDigits()

JavaTM 2 Platform
Std. Ed. v1.3

バグや機能要求の報告
さらに詳しい API リファレンスおよび開発者ドキュメントについては、 Java 2 SDK SE Developer Documentation を参照してください。このドキュメントには、概念、用語の定義、回避策、 実用的なコード例など、開発者を対象にした詳細な解説が掲載されています。

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.