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 < myNumber.length; ++i) { output.println(nf.format(myNumber[i]) + "; "); }
getInstance
を呼び出すときにそれを指定します。
さらに、NumberFormat nf = NumberFormat.getInstance(Locale.FRENCH);
NumberFormat
を使って数値を解析することができます。
通常の数値フォーマットを得るには、myNumber = nf.parse(myString);
getInstance
かgetNumberInstance
を使用します。整数型数値フォーマットを得るには、getIntegerInstance
を使用します。通貨数値フォーマットを得るには、getCurrencyInstance
を使用します。そして、パーセントを表示するフォーマットを得るには、getPercentInstance
を使用します。このフォーマットを使うと、0.53などの小数点以下は53%のように表示されます。
さらに、setMinimumFractionDigits
などのメソッドを使えば、数値の表示を制御することができます。フォーマットや解析をさらに制御したい場合、あるいはこのような制御をユーザーが使えるようにしたい場合は、ファクトリ・メソッドから得られるNumberFormat
をDecimalFormat
にキャストすることもできます。これはほとんどのロケールで有効ですが、有効にならないロケールの場合に備えて、これは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を使います。
さらに、parse
とformat
メソッドの形式をParsePosition
とFieldPosition
とともに使用すれば、次のことが可能です。
FieldPosition
を渡すことができます。このとき、field
= INTEGER_FIELD
とします。出力では、getEndIndex
が、整数の最後の文字と小数点の間のオフセットに設定されます。文字列の前に(desiredSpaceCount - getEndIndex)のスペースを追加してください。
getEndIndex
までピクセル単位で測ります。次に、テキストを描く前に、(desiredPixelWidth - widthToAlignmentPoint)だけペンを移動します。これは、小数点を扱うことはできませんが、終わりに追加の文字がある場合にも有効です。たとえば、-12を"(12)"にするように、負の数に括弧を付ける場合です。
数値フォーマットは同期化されません。スレッドごとに別のフォーマット・インスタンスを作成することをお薦めします。複数のスレッドがフォーマットに並行してアクセスする場合は、外部的に同期化する必要があります。
修飾子と型 | クラスと説明 |
---|---|
static class |
NumberFormat.Field
NumberFormat.formatToCharacterIterator から返されたAttributedCharacterIterator 内の属性キー、およびFieldPosition 内のフィールド識別子として使用する定数を定義します。 |
修飾子と型 | フィールドと説明 |
---|---|
static int |
FRACTION_FIELD
FieldPositionオブジェクトを構築するためのフィールド定数です。
|
static int |
INTEGER_FIELD
FieldPositionオブジェクトを構築するためのフィールド定数です。
|
修飾子 | コンストラクタと説明 |
---|---|
protected |
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()
このクラスの
get*Instance メソッドがローカライズされたインスタンスを返すことのできるロケールすべての配列を返します。 |
Currency |
getCurrency()
通貨値のフォーマット時に、この数値フォーマットが使用する通貨を取得します。
|
static NumberFormat |
getCurrencyInstance()
現在のデフォルトの
FORMAT ロケールに対する通貨フォーマットを返します。 |
static NumberFormat |
getCurrencyInstance(Locale inLocale)
指定されたロケールに対する通貨フォーマットを返します。
|
static NumberFormat |
getInstance()
現在のデフォルトの
FORMAT ロケールに対する汎用数値フォーマットを返します。 |
static NumberFormat |
getInstance(Locale inLocale)
指定されたロケールに対する汎用数値フォーマットを返します。
|
static NumberFormat |
getIntegerInstance()
現在のデフォルトの
FORMAT ロケールに対する整数型数値フォーマットを返します。 |
static NumberFormat |
getIntegerInstance(Locale inLocale)
指定されたロケールに対する整数型数値フォーマットを返します。
|
int |
getMaximumFractionDigits()
数値の小数部分として可能な最大桁数を返します。
|
int |
getMaximumIntegerDigits()
数値の整数部分として可能な最大桁数を返します。
|
int |
getMinimumFractionDigits()
数値の小数部分として可能な最小桁数を返します。
|
int |
getMinimumIntegerDigits()
数値の整数部分として可能な最小桁数を返します。
|
static NumberFormat |
getNumberInstance()
現在のデフォルトの
FORMAT ロケールに対する汎用数値フォーマットを返します。 |
static NumberFormat |
getNumberInstance(Locale inLocale)
指定されたロケールに対する汎用数値フォーマットを返します。
|
static NumberFormat |
getPercentInstance()
現在のデフォルトの
FORMAT ロケールに対するパーセント・フォーマットを返します。 |
static NumberFormat |
getPercentInstance(Locale inLocale)
指定されたロケールに対するパーセント・フォーマットを返します。
|
RoundingMode |
getRoundingMode()
このNumberFormatで使用される
RoundingMode を取得します。 |
int |
hashCode()
hashCodeをオーバーライドします。
|
boolean |
isGroupingUsed()
このフォーマットでグループ化が使用される場合に、trueを返します。
|
boolean |
isParseIntegerOnly()
このフォーマットが数値を整数としてのみ解析する場合に、trueを返します。
|
Number |
parse(String source)
指定された文字列の先頭からテキストを解析して数値を生成します。
|
abstract Number |
parse(String source, ParsePosition parsePosition)
可能な場合([Long.MIN_VALUE, Long.MAX_VALUE]の範囲で、小数部分がない場合など)はLongを、そうでない場合はDoubleを返します。
|
Object |
parseObject(String source, ParsePosition pos)
文字列からテキストを解析して
Number を生成します。 |
void |
setCurrency(Currency currency)
通貨値のフォーマット時に、この数値フォーマットが使用する通貨を設定します。
|
void |
setGroupingUsed(boolean newValue)
このフォーマットでグループ化を使用するかどうかを設定します。
|
void |
setMaximumFractionDigits(int newValue)
数値の小数部分の最大桁数を設定します。
|
void |
setMaximumIntegerDigits(int newValue)
数値の整数部分の最大桁数を設定します。
|
void |
setMinimumFractionDigits(int newValue)
数値の小数部分の最小桁数を設定します。
|
void |
setMinimumIntegerDigits(int newValue)
数値の整数部分の最小桁数を設定します。
|
void |
setParseIntegerOnly(boolean value)
数値を整数としてのみ解析するかどうかを設定します。
|
void |
setRoundingMode(RoundingMode roundingMode)
このNumberFormatで使用される
RoundingMode を設定します。 |
format, formatToCharacterIterator, parseObject
public static final int INTEGER_FIELD
FieldPosition
、定数フィールド値public static final int FRACTION_FIELD
FieldPosition
、定数フィールド値public StringBuffer format(Object number, StringBuffer toAppendTo, FieldPosition pos)
Number
の任意のサブクラスです。
この実装は、numberから値を抽出する際に、情報の損失なしにlong
に変換可能な整数型の値に対しては、Number.longValue()
を使用します。bit length
が64未満のBigInteger
値もこれに該当します。その他の型に対しては、Number.doubleValue()
を使用します。続いて、format(long,java.lang.StringBuffer,java.text.FieldPosition)
またはformat(double,java.lang.StringBuffer,java.text.FieldPosition)
を呼び出します。ただしBigDecimal
値とBigInteger
値の場合は、これにより、その絶対値情報や精度が失われる可能性があります。
format
、クラス: Format
number
- フォーマットする数値toAppendTo
- フォーマット後のテキストを追加するStringBuffer
pos
- 入力では、必要であれば位置合わせフィールド。出力では、その位置合わせフィールドのオフセット。toAppendTo
として渡された値IllegalArgumentException
- number
がnullであるか、Number
のインスタンスでない場合。NullPointerException
- toAppendTo
またはpos
がnullの場合ArithmeticException
- 丸め処理が必要な場合に丸めモードがRoundingMode.UNNECESSARYに設定されているときFieldPosition
public final Object parseObject(String source, ParsePosition pos)
Number
を生成します。
メソッドはpos
によって指定されたインデックスを開始位置としてテキストの解析を試みます。解析が完了すると、pos
のインデックスは、使用された最後の文字(解析では、文字列の最後までのすべての文字が使用されるとは限らない)のあとのインデックスに更新され、解析された数値が返されます。更新されたpos
は、このメソッドの次の呼出しの開始点を示すのに使用できます。エラーが発生した場合は、pos
のインデックスは変更されず、エラーが発生した文字のインデックスにpos
のエラー・インデックスが設定され、nullが返されます。
数値の解析の詳細については、parse(String, ParsePosition)
メソッドを参照してください。
parseObject
、クラス: Format
source
- 部分的に解析されるString
。pos
- 上記のインデックスおよびエラー・インデックス情報を持つParsePosition
オブジェクトNumber
。エラーの場合はnullを返す。NullPointerException
- pos
がnullである場合。public final String format(double number)
number
- フォーマットするdouble数値ArithmeticException
- 丸め処理が必要な場合に丸めモードがRoundingMode.UNNECESSARYに設定されているときFormat.format(java.lang.Object)
public final String format(long number)
number
- フォーマットするlong数値ArithmeticException
- 丸め処理が必要な場合に丸めモードがRoundingMode.UNNECESSARYに設定されているときFormat.format(java.lang.Object)
public abstract StringBuffer format(double number, StringBuffer toAppendTo, FieldPosition pos)
number
- フォーマットするdouble数値toAppendTo
- フォーマット後のテキストを付加するStringBufferpos
- フィールドの位置ArithmeticException
- 丸め処理が必要な場合に丸めモードがRoundingMode.UNNECESSARYに設定されているときFormat.format(java.lang.Object)
public abstract StringBuffer format(long number, StringBuffer toAppendTo, FieldPosition pos)
number
- フォーマットするlong数値toAppendTo
- フォーマット後のテキストを付加するStringBufferpos
- フィールドの位置ArithmeticException
- 丸め処理が必要な場合に丸めモードがRoundingMode.UNNECESSARYに設定されているときFormat.format(java.lang.Object)
public abstract Number parse(String source, ParsePosition parsePosition)
source
- 解析するStringparsePosition
- 解析位置isParseIntegerOnly()
, Format.parseObject(java.lang.String, java.text.ParsePosition)
public Number parse(String source) throws ParseException
数値の解析の詳細については、parse(String, ParsePosition)
メソッドを参照してください。
source
- 先頭が解析されるString
。Number
。ParseException
- 指定された文字列の先頭が解析できない場合。public boolean isParseIntegerOnly()
true
、そうでない場合はfalse
public void setParseIntegerOnly(boolean value)
value
- 数値を整数としてのみ解析する場合はtrue
、そうでない場合はfalse
isParseIntegerOnly()
public static final NumberFormat getInstance()
FORMAT
ロケールに対する汎用数値フォーマットを返します。これは、getNumberInstance()
を呼び出すのと同じです。NumberFormat
インスタンスpublic static NumberFormat getInstance(Locale inLocale)
getNumberInstance(inLocale)
を呼び出すのと同じです。inLocale
- 目的のロケールNumberFormat
インスタンスpublic static final NumberFormat getNumberInstance()
FORMAT
ロケールに対する汎用数値フォーマットを返します。
これは、getNumberInstance(Locale.getDefault(Locale.Category.FORMAT))
の呼び出しと同等です。
NumberFormat
インスタンスLocale.getDefault(java.util.Locale.Category)
、Locale.Category.FORMAT
public static NumberFormat getNumberInstance(Locale inLocale)
inLocale
- 目的のロケールNumberFormat
インスタンスpublic static final NumberFormat getIntegerInstance()
FORMAT
ロケールに対する整数型数値フォーマットを返します。返された数値フォーマットは、フォーマットするために、最近値方向への丸めモード(RoundingMode.HALF_EVEN
を参照)を使って、浮動小数点数値をもっとも近い整数値に丸め、入力文字列の整数部分だけを解析する(isParseIntegerOnly
を参照)ように設定されます。
これは、getIntegerInstance(Locale.getDefault(Locale.Category.FORMAT))
の呼び出しと同等です。
getRoundingMode()
、Locale.getDefault(java.util.Locale.Category)
、Locale.Category.FORMAT
public static NumberFormat getIntegerInstance(Locale inLocale)
RoundingMode.HALF_EVEN
を参照)を使って、浮動小数点数値をもっとも近い整数値に丸め、入力文字列の整数部分だけを解析する(isParseIntegerOnly
を参照)ように設定されます。inLocale
- 目的のロケールgetRoundingMode()
public static final NumberFormat getCurrencyInstance()
FORMAT
ロケールに対する通貨フォーマットを返します。
これは、getCurrencyInstance(Locale.getDefault(Locale.Category.FORMAT))
の呼び出しと同等です。
NumberFormat
インスタンスLocale.getDefault(java.util.Locale.Category)
、Locale.Category.FORMAT
public static NumberFormat getCurrencyInstance(Locale inLocale)
inLocale
- 目的のロケールNumberFormat
インスタンスpublic static final NumberFormat getPercentInstance()
FORMAT
ロケールに対するパーセント・フォーマットを返します。
これは、getPercentInstance(Locale.getDefault(Locale.Category.FORMAT))
の呼び出しと同等です。
NumberFormat
インスタンスLocale.getDefault(java.util.Locale.Category)
、Locale.Category.FORMAT
public static NumberFormat getPercentInstance(Locale inLocale)
inLocale
- 目的のロケールNumberFormat
インスタンスpublic static Locale[] getAvailableLocales()
get*Instance
メソッドがローカライズされたインスタンスを返すことのできるロケールすべての配列を返します。返される配列は、JavaランタイムおよびインストールされているNumberFormatProvider
実装によってサポートされているロケールの和集合を表します。これには、Locale.US
と等価なLocale
インスタンスが少なくとも1つ含まれている必要があります。NumberFormat
インスタンスを使用可能なロケールの配列。public int hashCode()
hashCode
、クラス: Object
Object.equals(java.lang.Object)
, System.identityHashCode(java.lang.Object)
public boolean equals(Object obj)
equals
、クラス: Object
obj
- 比較対象の参照オブジェクト。true
、それ以外の場合はfalse
。Object.hashCode()
、HashMap
public Object clone()
public boolean isGroupingUsed()
true
、そうでない場合はfalse
setGroupingUsed(boolean)
public void setGroupingUsed(boolean newValue)
newValue
- グループ化を使用している場合はtrue
、そうでない場合はfalse
isGroupingUsed()
public int getMaximumIntegerDigits()
setMaximumIntegerDigits(int)
public void setMaximumIntegerDigits(int newValue)
newValue
- 整数の最大表示桁数。0より小さい場合は0が使用される。具象サブクラスでは、この値の上限を、フォーマットされる数値の種類に適した値に強制できる。getMaximumIntegerDigits()
public int getMinimumIntegerDigits()
setMinimumIntegerDigits(int)
public void setMinimumIntegerDigits(int newValue)
newValue
- 整数の最小表示桁数。0より小さい場合は0が使用される。具象サブクラスでは、この値の上限を、フォーマットされる数値の種類に適した値に強制できる。getMinimumIntegerDigits()
public int getMaximumFractionDigits()
setMaximumFractionDigits(int)
public void setMaximumFractionDigits(int newValue)
newValue
- 小数部の最大表示桁数。0より小さい場合は0が使用される。具象サブクラスでは、この値の上限を、フォーマットされる数値の種類に適した値に強制できる。getMaximumFractionDigits()
public int getMinimumFractionDigits()
setMinimumFractionDigits(int)
public void setMinimumFractionDigits(int newValue)
newValue
- 小数部の最小表示桁数。0より小さい場合は0が使用される。具象サブクラスでは、この値の上限を、フォーマットされる数値の種類に適した値に強制できる。getMinimumFractionDigits()
public Currency getCurrency()
setCurrency
を使用して設定された通貨がない場合、nullが返されます。
デフォルト実装はUnsupportedOperationException
をスローします。
null
UnsupportedOperationException
- 数値フォーマットのクラスが通貨フォーマットを実装しない場合public void setCurrency(Currency currency)
デフォルト実装はUnsupportedOperationException
をスローします。
currency
- この数値フォーマットで使用する新しい通貨UnsupportedOperationException
- 数値フォーマットのクラスが通貨フォーマットを実装しない場合NullPointerException
- currency
がnullである場合public RoundingMode getRoundingMode()
RoundingMode
を取得します。NumberFormatのこのメソッドのデフォルト実装は、常にUnsupportedOperationException
をスローします。さまざまな丸めモードを処理するサブクラスは、このメソッドをオーバーライドする必要があります。RoundingMode
。UnsupportedOperationException
- デフォルトの実装は常にこの例外をスローするsetRoundingMode(RoundingMode)
public void setRoundingMode(RoundingMode roundingMode)
RoundingMode
を設定します。NumberFormatのこのメソッドのデフォルト実装は、常にUnsupportedOperationException
をスローします。さまざまな丸めモードを処理するサブクラスは、このメソッドをオーバーライドする必要があります。roundingMode
- 使用されるRoundingMode
UnsupportedOperationException
- デフォルトの実装は常にこの例外をスローするNullPointerException
- roundingMode
がnullである場合getRoundingMode()
バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.