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, parseObjectpublic static final int INTEGER_FIELD
FieldPosition、定数フィールド値public static final int FRACTION_FIELD
FieldPosition、定数フィールド値protected NumberFormat()
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、クラスFormatnumber - フォーマットする数値toAppendTo - フォーマット後のテキストを追加するStringBufferpos - 入力では、必要であれば位置合わせフィールド。 出力では、その位置合わせフィールドのオフセット。 toAppendToとして渡された値IllegalArgumentException - numberがnullであるか、Numberのインスタンスでない場合。NullPointerException - toAppendToまたはposがnullの場合ArithmeticException - 丸め処理が必要な場合に丸めモードがRoundingMode.UNNECESSARYに設定されているときFieldPositionpublic final Object parseObject(String source, ParsePosition pos)
Numberを生成します。
メソッドはposによって指定されたインデックスを開始位置としてテキストの解析を試みます。 解析が完了すると、posのインデックスは、使用された最後の文字(解析では、文字列の最後までのすべての文字が使用されるとは限らない)のあとのインデックスに更新され、解析された数値が返されます。 更新されたposは、このメソッドの次の呼出しの開始点を示すのに使用できます。 エラーが発生した場合は、posのインデックスは変更されず、エラーが発生した文字のインデックスにposのエラー・インデックスが設定され、nullが返されます。
数値の解析の詳細については、parse(String, ParsePosition)メソッドを参照してください。
parseObject、クラスFormatsource - 部分的に解析される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、そうでない場合はfalsepublic void setParseIntegerOnly(boolean value)
value - 数値を整数としてのみ解析する場合はtrue、そうでない場合はfalseisParseIntegerOnly()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.FORMATpublic 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.FORMATpublic 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.FORMATpublic 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.FORMATpublic static NumberFormat getPercentInstance(Locale inLocale)
inLocale - 目的のロケールNumberFormatインスタンスpublic static Locale[] getAvailableLocales()
get*Instanceメソッドがローカライズされたインスタンスを返すことのできるロケールすべての配列を返します。 返される配列は、JavaランタイムおよびインストールされているNumberFormatProvider実装によってサポートされているロケールの和集合を表します。 これには、Locale.USと等価なLocaleインスタンスが少なくとも1つ含まれている必要があります。 NumberFormatインスタンスを使用可能なロケールの配列。public int hashCode()
hashCode、クラスObjectObject.equals(java.lang.Object), System.identityHashCode(java.lang.Object)public boolean equals(Object obj)
equals、クラスObjectobj - 比較対象の参照オブジェクト。true、それ以外の場合はfalse。Object.hashCode()、HashMappublic Object clone()
public boolean isGroupingUsed()
true、そうでない場合はfalsesetGroupingUsed(boolean)public void setGroupingUsed(boolean newValue)
newValue - グループ化を使用している場合はtrue、そうでない場合はfalseisGroupingUsed()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をスローします。
nullUnsupportedOperationException - 数値フォーマットのクラスが通貨フォーマットを実装しない場合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 - 使用されるRoundingModeUnsupportedOperationException - デフォルトの実装は常にこの例外をスローするNullPointerException - roundingModeがnullである場合getRoundingMode() バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。 そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2025, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Documentation Redistribution Policyも参照してください。