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()
現在のデフォルトロケールに対する通貨フォーマットを返します。
|
static NumberFormat |
getCurrencyInstance(Locale inLocale)
指定されたロケールに対する通貨フォーマットを返します。
|
static NumberFormat |
getInstance()
現在のデフォルトロケールに対する汎用数値フォーマットを返します。
|
static NumberFormat |
getInstance(Locale inLocale)
指定されたロケールに対する汎用数値フォーマットを返します。
|
static NumberFormat |
getIntegerInstance()
現在のデフォルトロケールに対する整数型数値フォーマットを返します。
|
static NumberFormat |
getIntegerInstance(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)
指定されたロケールに対するパーセントフォーマットを返します。
|
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
、定数フィールド値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
、クラス: 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)
ArithmeticException
- 丸め処理が必要な場合に丸めモードが RoundingMode.UNNECESSARY に設定されているときFormat.format(java.lang.Object)
public final String format(long number)
ArithmeticException
- 丸め処理が必要な場合に丸めモードが RoundingMode.UNNECESSARY に設定されているときFormat.format(java.lang.Object)
public abstract StringBuffer format(double number, StringBuffer toAppendTo, FieldPosition pos)
ArithmeticException
- 丸め処理が必要な場合に丸めモードが RoundingMode.UNNECESSARY に設定されているときFormat.format(java.lang.Object)
public abstract StringBuffer format(long number, StringBuffer toAppendTo, FieldPosition pos)
ArithmeticException
- 丸め処理が必要な場合に丸めモードが RoundingMode.UNNECESSARY に設定されているときFormat.format(java.lang.Object)
public abstract Number parse(String source, ParsePosition parsePosition)
public Number parse(String source) throws ParseException
数値の解析の詳細については、parse(String, ParsePosition)
メソッドを参照してください。
source
- 先頭が解析される String
。Number
。ParseException
- 指定された文字列の先頭が解析できない場合。public boolean isParseIntegerOnly()
public void setParseIntegerOnly(boolean value)
isParseIntegerOnly()
public static final NumberFormat getInstance()
getNumberInstance()
を呼び出すのと同じです。public static NumberFormat getInstance(Locale inLocale)
getNumberInstance(inLocale)
を呼び出すのと同じです。public static final NumberFormat getNumberInstance()
public static NumberFormat getNumberInstance(Locale inLocale)
public static final NumberFormat getIntegerInstance()
RoundingMode.HALF_EVEN
を参照) を使って、浮動小数点数値をもっとも近い整数値に丸め、入力文字列の整数部分だけを解析する (isParseIntegerOnly
を参照) ように設定されます。getRoundingMode()
public static NumberFormat getIntegerInstance(Locale inLocale)
RoundingMode.HALF_EVEN
を参照) を使って、浮動小数点数値をもっとも近い整数値に丸め、入力文字列の整数部分だけを解析する (isParseIntegerOnly
を参照) ように設定されます。getRoundingMode()
public static final NumberFormat getCurrencyInstance()
public static NumberFormat getCurrencyInstance(Locale inLocale)
public static final NumberFormat getPercentInstance()
public static NumberFormat getPercentInstance(Locale inLocale)
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()
public void setGroupingUsed(boolean newValue)
isGroupingUsed()
public int getMaximumIntegerDigits()
public void setMaximumIntegerDigits(int newValue)
newValue
- 整数の最大表示桁数。0 より小さい場合は 0 が使用される。具象サブクラスでは、この値の上限を、フォーマットされる数値の種類に適した値に強制できる。getMaximumIntegerDigits()
public int getMinimumIntegerDigits()
public void setMinimumIntegerDigits(int newValue)
newValue
- 整数の最小表示桁数。0 より小さい場合は 0 が使用される。具象サブクラスでは、この値の上限を、フォーマットされる数値の種類に適した値に強制できる。getMinimumIntegerDigits()
public int getMaximumFractionDigits()
public void setMaximumFractionDigits(int newValue)
newValue
- 小数部の最大表示桁数。0 より小さい場合は 0 が使用される。具象サブクラスでは、この値の上限を、フォーマットされる数値の種類に適した値に強制できる。getMaximumFractionDigits()
public int getMinimumFractionDigits()
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, 2013, Oracle and/or its affiliates. All rights reserved.