Java : NumberFormat - API使用例
NumberFormat (Java SE 24 & JDK 24) の使い方まとめです。
ほとんどのメソッドにサンプルコードがあります。
APIドキュメントのおともにどうぞ。
概要
NumberFormatは、すべての数値フォーマットに対するabstract基底クラスです。 このクラスは、数値をローカライズされた方法で書式設定および解析するためのインタフェースを提供します。
NumberFormat クラスは、ロケール(言語、国・地域) に依存した数値に関する情報を、そのロケールに適した表記へと変換(フォーマット) します。
例えば、通貨をフォーマットすると、ロケールによって
- 日本 : ¥(円)
- アメリカ : $ (ドル)
となります。
また、数値には3桁ごとの区切り文字が入ります。
System.out.println(Locale.getDefault().toLanguageTag()); // ja-JP
final var format = NumberFormat.getNumberInstance();
System.out.println(format.format(1234000)); // 1,234,000
System.out.println(format.format(-56789)); // -56,789
System.out.println(format.format(0.123456)); // 0.123
final var number = 1234;
final var format1 = NumberFormat.getCurrencyInstance(Locale.JAPAN);
System.out.println(format1.format(number)); // ¥1,234
final var format2 = NumberFormat.getCurrencyInstance(Locale.US);
System.out.println(format2.format(number)); // $1,234.00
final var number = 10000000;
final var format1 = NumberFormat.getCompactNumberInstance(Locale.JAPAN, NumberFormat.Style.SHORT);
System.out.println(format1.format(number)); // 1000万
final var format2 = NumberFormat.getCompactNumberInstance(Locale.US, NumberFormat.Style.LONG);
System.out.println(format2.format(number)); // 10 million
フィールド
static final int FRACTION_FIELD
FieldPositionオブジェクトを構築するためのフィールド定数です。
final var number = 123.456;
final var format = NumberFormat.getNumberInstance(Locale.US);
System.out.println(format.format(number)); // 123.456
{
final var sb = new StringBuffer("num = ");
System.out.println(sb); // num =
final var pos = new FieldPosition(NumberFormat.INTEGER_FIELD);
final var ret = format.format(number, sb, pos);
System.out.println(ret); // num = 123.456
System.out.println(pos.getBeginIndex()); // 6
System.out.println(pos.getEndIndex()); // 9
}
{
final var sb = new StringBuffer("num = ");
System.out.println(sb); // num =
final var pos = new FieldPosition(NumberFormat.FRACTION_FIELD);
final var ret = format.format(number, sb, pos);
System.out.println(ret); // num = 123.456
System.out.println(pos.getBeginIndex()); // 10
System.out.println(pos.getEndIndex()); // 13
}
static final int INTEGER_FIELD
FieldPositionオブジェクトを構築するためのフィールド定数です。
final var number = 123.456;
final var format = NumberFormat.getNumberInstance(Locale.US);
System.out.println(format.format(number)); // 123.456
{
final var sb = new StringBuffer("num = ");
System.out.println(sb); // num =
final var pos = new FieldPosition(NumberFormat.INTEGER_FIELD);
final var ret = format.format(number, sb, pos);
System.out.println(ret); // num = 123.456
System.out.println(pos.getBeginIndex()); // 6
System.out.println(pos.getEndIndex()); // 9
}
{
final var sb = new StringBuffer("num = ");
System.out.println(sb); // num =
final var pos = new FieldPosition(NumberFormat.FRACTION_FIELD);
final var ret = format.format(number, sb, pos);
System.out.println(ret); // num = 123.456
System.out.println(pos.getBeginIndex()); // 10
System.out.println(pos.getEndIndex()); // 13
}
コンストラクタ
NumberFormat ()
唯一のコンストラクタです。
独自にサブクラスを作ることは少ないと思いますので、コード例は割愛します。
メソッド
Object clone ()
Cloneableをオーバーライドします。
final var number = 1.234;
final var format = NumberFormat.getNumberInstance();
format.setMaximumFractionDigits(2);
System.out.println(format.format(number)); // 1.23
if (format.clone() instanceof NumberFormat cloned) {
System.out.println(cloned.format(number)); // 1.23
System.out.println(cloned.equals(format)); // true
}
boolean equals (Object obj)
指定されたオブジェクトをこのNumberFormatと比較し、等しいかどうかを確認します。
final var format1 = NumberFormat.getNumberInstance();
final var format2 = NumberFormat.getCurrencyInstance();
System.out.println(format1.equals(format2)); // false
final var format1 = NumberFormat.getNumberInstance();
final var format2 = NumberFormat.getNumberInstance();
System.out.println(format1.equals(format2)); // true
format1.setMaximumFractionDigits(2);
System.out.println(format1.equals(format2)); // false
final String format (double number)
フォーマットの特殊化です。
System.out.println(Locale.getDefault().toLanguageTag()); // ja-JP
final var number = 1.234;
final var format = NumberFormat.getNumberInstance();
System.out.println(format.format(number)); // 1.234
format.setMaximumFractionDigits(2);
System.out.println(format.format(number)); // 1.23
format.setMinimumIntegerDigits(3);
System.out.println(format.format(number)); // 001.23
abstract StringBuffer format (double number, StringBuffer toAppendTo, FieldPosition pos)
フォーマットの特殊化です。
final var number = 123.456;
final var format = NumberFormat.getNumberInstance(Locale.US);
System.out.println(format.format(number)); // 123.456
{
final var sb = new StringBuffer("num = ");
System.out.println(sb); // num =
final var pos = new FieldPosition(NumberFormat.INTEGER_FIELD);
final var ret = format.format(number, sb, pos);
System.out.println(ret); // num = 123.456
System.out.println(pos.getBeginIndex()); // 6
System.out.println(pos.getEndIndex()); // 9
}
{
final var sb = new StringBuffer("num = ");
System.out.println(sb); // num =
final var pos = new FieldPosition(NumberFormat.FRACTION_FIELD);
final var ret = format.format(number, sb, pos);
System.out.println(ret); // num = 123.456
System.out.println(pos.getBeginIndex()); // 10
System.out.println(pos.getEndIndex()); // 13
}
final String format (long number)
フォーマットの特殊化です。
System.out.println(Locale.getDefault().toLanguageTag()); // ja-JP
final var number = 1234L;
final var format1 = NumberFormat.getCurrencyInstance();
System.out.println(format1.format(number)); // ¥1,234
final var format2 = NumberFormat.getCurrencyInstance(Locale.US);
System.out.println(format2.format(number)); // $1,234.00
abstract StringBuffer format (long number, StringBuffer toAppendTo, FieldPosition pos)
フォーマットの特殊化です。
final var format = NumberFormat.getCompactNumberInstance(Locale.US, NumberFormat.Style.SHORT);
format.setMinimumFractionDigits(2);
final var number = 12340L;
System.out.println(format.format(number)); // 12.34K
{
final var sb = new StringBuffer("num = ");
System.out.println(sb); // num =
final var pos = new FieldPosition(NumberFormat.INTEGER_FIELD);
final var ret = format.format(number, sb, pos);
System.out.println(ret); // num = 12.34K
System.out.println(pos.getBeginIndex()); // 6
System.out.println(pos.getEndIndex()); // 8
}
{
final var sb = new StringBuffer("num = ");
System.out.println(sb); // num =
final var pos = new FieldPosition(NumberFormat.FRACTION_FIELD);
final var ret = format.format(number, sb, pos);
System.out.println(ret); // num = 12.34K
System.out.println(pos.getBeginIndex()); // 9
System.out.println(pos.getEndIndex()); // 11
}
StringBuffer format (Object number, StringBuffer toAppendTo, FieldPosition pos)
数値をフォーマットし、その結果のテキストを指定された文字列バッファに追加します。
final var format = NumberFormat.getCompactNumberInstance(Locale.US, NumberFormat.Style.SHORT);
format.setMinimumFractionDigits(2);
final var number = new BigInteger("12340000000000");
System.out.println(format.format(number)); // 12.34T
{
final var sb = new StringBuffer("num = ");
System.out.println(sb); // num =
final var pos = new FieldPosition(NumberFormat.INTEGER_FIELD);
final var ret = format.format(number, sb, pos);
System.out.println(ret); // num = 12.34T
System.out.println(pos.getBeginIndex()); // 6
System.out.println(pos.getEndIndex()); // 8
}
{
final var sb = new StringBuffer("num = ");
System.out.println(sb); // num =
final var pos = new FieldPosition(NumberFormat.FRACTION_FIELD);
final var ret = format.format(number, sb, pos);
System.out.println(ret); // num = 12.34T
System.out.println(pos.getBeginIndex()); // 9
System.out.println(pos.getEndIndex()); // 11
}
static Locale[] getAvailableLocales ()
このクラスのget*Instanceメソッドがローカライズされたインスタンスを返すことのできるロケールすべての配列を返します。
final var locales = NumberFormat.getAvailableLocales();
for (final var locale : locales) {
System.out.println(locale.toLanguageTag());
}
// 結果
// ↓
//und
//sr-ME
//ksh
//fr-SY
//fr-TD
//fr-TG
//ccp
//...
static NumberFormat getCompactNumberInstance ()
"SHORT"書式設定スタイルのデフォルトFORMATロケールに対してコンパクト数値書式設定を返します。
System.out.println(Locale.getDefault().toLanguageTag()); // ja-JP
final var number = 10000000;
final var format1 = NumberFormat.getCompactNumberInstance();
System.out.println(format1.format(number)); // 1000万
final var format2 = NumberFormat.getCompactNumberInstance(Locale.US, NumberFormat.Style.SHORT);
System.out.println(format2.format(number)); // 10M
final var format3 = NumberFormat.getCompactNumberInstance(Locale.US, NumberFormat.Style.LONG);
System.out.println(format3.format(number)); // 10 million
static NumberFormat getCompactNumberInstance (Locale locale, NumberFormat.Style formatStyle)
指定されたlocaleおよびformatStyleに対してコンパクトな数値形式を返します。
System.out.println(Locale.getDefault().toLanguageTag()); // ja-JP
final var number = 10000000;
final var format1 = NumberFormat.getCompactNumberInstance();
System.out.println(format1.format(number)); // 1000万
final var format2 = NumberFormat.getCompactNumberInstance(Locale.US, NumberFormat.Style.SHORT);
System.out.println(format2.format(number)); // 10M
final var format3 = NumberFormat.getCompactNumberInstance(Locale.US, NumberFormat.Style.LONG);
System.out.println(format3.format(number)); // 10 million
Currency getCurrency ()
通貨値のフォーマット時に、この数値フォーマットが使用する通貨を取得します。
System.out.println(Locale.getDefault().toLanguageTag()); // ja-JP
final var number = 1234;
final var format1 = NumberFormat.getCurrencyInstance();
System.out.println(format1.format(number)); // ¥1,234
System.out.println(format1.getCurrency()); // JPY
System.out.println(format1.getMinimumFractionDigits()); // 0
final var format2 = NumberFormat.getCurrencyInstance(Locale.US);
System.out.println(format2.format(number)); // $1,234.00
System.out.println(format2.getCurrency()); // USD
System.out.println(format2.getMinimumFractionDigits()); // 2
static final NumberFormat getCurrencyInstance ()
現在のデフォルトのFORMATロケールに対する通貨フォーマットを返します。
System.out.println(Locale.getDefault().toLanguageTag()); // ja-JP
final var number = 1234;
final var format1 = NumberFormat.getCurrencyInstance();
System.out.println(format1.format(number)); // ¥1,234
System.out.println(format1.getCurrency()); // JPY
System.out.println(format1.getMinimumFractionDigits()); // 0
final var format2 = NumberFormat.getCurrencyInstance(Locale.US);
System.out.println(format2.format(number)); // $1,234.00
System.out.println(format2.getCurrency()); // USD
System.out.println(format2.getMinimumFractionDigits()); // 2
static NumberFormat getCurrencyInstance (Locale inLocale)
指定されたロケールに対する通貨フォーマットを返します。
System.out.println(Locale.getDefault().toLanguageTag()); // ja-JP
final var number = 1234;
final var format1 = NumberFormat.getCurrencyInstance();
System.out.println(format1.format(number)); // ¥1,234
System.out.println(format1.getCurrency()); // JPY
System.out.println(format1.getMinimumFractionDigits()); // 0
final var format2 = NumberFormat.getCurrencyInstance(Locale.US);
System.out.println(format2.format(number)); // $1,234.00
System.out.println(format2.getCurrency()); // USD
System.out.println(format2.getMinimumFractionDigits()); // 2
static final NumberFormat getInstance ()
現在のデフォルトのFORMATロケールに対する汎用数値フォーマットを返します。
このメソッドは getNumberInstance() と同等です。
API使用例はそちらをご参照ください。
static NumberFormat getInstance (Locale inLocale)
指定されたロケールに対する汎用数値フォーマットを返します。
このメソッドは getNumberInstance(inLocale) と同等です。
API使用例はそちらをご参照ください。
static final NumberFormat getIntegerInstance ()
現在のデフォルトのFORMATロケールに対する整数型数値フォーマットを返します。
System.out.println(Locale.getDefault().toLanguageTag()); // ja-JP
final var format1 = NumberFormat.getIntegerInstance();
System.out.println(format1.getRoundingMode()); // HALF_EVEN
System.out.println(format1.isParseIntegerOnly()); // true
System.out.println(format1.format(12345678)); // 12,345,678
System.out.println(format1.format(9.9)); // 10
final var format2 = NumberFormat.getIntegerInstance(Locale.GERMANY);
System.out.println(format2.format(12345678)); // 12.345.678
System.out.println(format2.format(9.9)); // 10
static NumberFormat getIntegerInstance (Locale inLocale)
指定されたロケールに対する整数型数値フォーマットを返します。
System.out.println(Locale.getDefault().toLanguageTag()); // ja-JP
final var format1 = NumberFormat.getIntegerInstance();
System.out.println(format1.getRoundingMode()); // HALF_EVEN
System.out.println(format1.isParseIntegerOnly()); // true
System.out.println(format1.format(12345678)); // 12,345,678
System.out.println(format1.format(9.9)); // 10
final var format2 = NumberFormat.getIntegerInstance(Locale.GERMANY);
System.out.println(format2.format(12345678)); // 12.345.678
System.out.println(format2.format(9.9)); // 10
int getMaximumFractionDigits ()
数値の小数部分として可能な最大桁数を返します。
System.out.println(Locale.getDefault().toLanguageTag()); // ja-JP
final var format = NumberFormat.getNumberInstance();
System.out.println(format.getMinimumFractionDigits()); // 0
System.out.println(format.getMaximumFractionDigits()); // 3
System.out.println(format.format(0.01234)); // 0.012
System.out.println(format.format(456.0)); // 456
format.setMinimumFractionDigits(1);
format.setMaximumFractionDigits(4);
System.out.println(format.getMinimumFractionDigits()); // 1
System.out.println(format.getMaximumFractionDigits()); // 4
System.out.println(format.format(0.01234)); // 0.0123
System.out.println(format.format(456.0)); // 456.0
int getMaximumIntegerDigits ()
数値の整数部分として可能な最大桁数を返します。
System.out.println(Locale.getDefault().toLanguageTag()); // ja-JP
final var format = NumberFormat.getNumberInstance();
System.out.println(format.getMinimumIntegerDigits()); // 1
System.out.println(format.getMaximumIntegerDigits()); // 2147483647
System.out.println(format.format(1234567890)); // 1,234,567,890
System.out.println(format.format(1)); // 1
format.setMinimumIntegerDigits(3);
format.setMaximumIntegerDigits(8);
System.out.println(format.getMinimumIntegerDigits()); // 3
System.out.println(format.getMaximumIntegerDigits()); // 8
System.out.println(format.format(1234567890)); // 34,567,890
System.out.println(format.format(1)); // 001
int getMinimumFractionDigits ()
数値の小数部分として可能な最小桁数を返します。
System.out.println(Locale.getDefault().toLanguageTag()); // ja-JP
final var format = NumberFormat.getNumberInstance();
System.out.println(format.getMinimumFractionDigits()); // 0
System.out.println(format.getMaximumFractionDigits()); // 3
System.out.println(format.format(0.01234)); // 0.012
System.out.println(format.format(456.0)); // 456
format.setMinimumFractionDigits(1);
format.setMaximumFractionDigits(4);
System.out.println(format.getMinimumFractionDigits()); // 1
System.out.println(format.getMaximumFractionDigits()); // 4
System.out.println(format.format(0.01234)); // 0.0123
System.out.println(format.format(456.0)); // 456.0
int getMinimumIntegerDigits ()
数値の整数部分として可能な最小桁数を返します。
System.out.println(Locale.getDefault().toLanguageTag()); // ja-JP
final var format = NumberFormat.getNumberInstance();
System.out.println(format.getMinimumIntegerDigits()); // 1
System.out.println(format.getMaximumIntegerDigits()); // 2147483647
System.out.println(format.format(1234567890)); // 1,234,567,890
System.out.println(format.format(1)); // 1
format.setMinimumIntegerDigits(3);
format.setMaximumIntegerDigits(8);
System.out.println(format.getMinimumIntegerDigits()); // 3
System.out.println(format.getMaximumIntegerDigits()); // 8
System.out.println(format.format(1234567890)); // 34,567,890
System.out.println(format.format(1)); // 001
static final NumberFormat getNumberInstance ()
現在のデフォルトのFORMATロケールに対する汎用数値フォーマットを返します。
System.out.println(Locale.getDefault().toLanguageTag()); // ja-JP
final var format1 = NumberFormat.getNumberInstance();
System.out.println(format1.format(12345678)); // 12,345,678
System.out.println(format1.format(0.123)); // 0.123
final var format2 = NumberFormat.getNumberInstance(Locale.GERMANY);
System.out.println(format2.format(12345678)); // 12.345.678
System.out.println(format2.format(0.123)); // 0,123
static NumberFormat getNumberInstance (Locale inLocale)
指定されたロケールに対する汎用数値フォーマットを返します。
System.out.println(Locale.getDefault().toLanguageTag()); // ja-JP
final var format1 = NumberFormat.getNumberInstance();
System.out.println(format1.format(12345678)); // 12,345,678
System.out.println(format1.format(0.123)); // 0.123
final var format2 = NumberFormat.getNumberInstance(Locale.GERMANY);
System.out.println(format2.format(12345678)); // 12.345.678
System.out.println(format2.format(0.123)); // 0,123
static final NumberFormat getPercentInstance ()
現在のデフォルトのFORMATロケールに対するパーセント・フォーマットを返します。
System.out.println(Locale.getDefault().toLanguageTag()); // ja-JP
final var format1 = NumberFormat.getPercentInstance();
System.out.println(format1.format(0.75)); // 75%
final var format2 = NumberFormat.getPercentInstance(Locale.FRANCE);
System.out.println(format2.format(0.75)); // 75 %
static NumberFormat getPercentInstance (Locale inLocale)
指定されたロケールに対するパーセント・フォーマットを返します。
System.out.println(Locale.getDefault().toLanguageTag()); // ja-JP
final var format1 = NumberFormat.getPercentInstance();
System.out.println(format1.format(0.75)); // 75%
final var format2 = NumberFormat.getPercentInstance(Locale.FRANCE);
System.out.println(format2.format(0.75)); // 75 %
RoundingMode getRoundingMode ()
このNumberFormatで使用されるRoundingModeを取得します。
final var format = NumberFormat.getNumberInstance(Locale.US);
System.out.println(format.getMaximumFractionDigits()); // 3
System.out.println(format.getRoundingMode()); // HALF_EVEN
System.out.println(format.format(0.1114)); // 0.111
System.out.println(format.format(0.1115)); // 0.112
System.out.println(format.format(0.1116)); // 0.112
format.setRoundingMode(RoundingMode.UP);
System.out.println(format.getRoundingMode()); // UP
System.out.println(format.format(0.1114)); // 0.112
System.out.println(format.format(0.1115)); // 0.112
System.out.println(format.format(0.1116)); // 0.112
format.setRoundingMode(RoundingMode.DOWN);
System.out.println(format.getRoundingMode()); // DOWN
System.out.println(format.format(0.1114)); // 0.111
System.out.println(format.format(0.1115)); // 0.111
System.out.println(format.format(0.1116)); // 0.111
int hashCode ()
このNumberFormatのハッシュ・コードを返します。
final var format1 = NumberFormat.getNumberInstance(Locale.US);
System.out.println(format1.hashCode()); // 423132
final var format2 = NumberFormat.getNumberInstance(Locale.JAPAN);
System.out.println(format2.hashCode()); // 423132
final var format3 = NumberFormat.getCurrencyInstance(Locale.US);
System.out.println(format3.hashCode()); // 423168
boolean isGroupingUsed ()
このフォーマットでグループ化が使用される場合に、trueを返します。
System.out.println(Locale.getDefault().toLanguageTag()); // ja-JP
final var format = NumberFormat.getNumberInstance();
System.out.println(format.isGroupingUsed()); // true
System.out.println(format.format(1234567)); // 1,234,567
format.setGroupingUsed(false);
System.out.println(format.isGroupingUsed()); // false
System.out.println(format.format(1234567)); // 1234567
boolean isParseIntegerOnly ()
この書式で数値のみが整数として解析される場合、trueを返します。
System.out.println(Locale.getDefault().toLanguageTag()); // ja-JP
final var format = NumberFormat.getNumberInstance();
System.out.println(format.isParseIntegerOnly()); // false
final var ret1 = format.parse("123");
System.out.println(ret1); // 123
final var ret2 = format.parse("4.567");
System.out.println(ret2); // 4.567
format.setParseIntegerOnly(true);
System.out.println(format.isParseIntegerOnly()); // true
final var ret3 = format.parse("4.567");
System.out.println(ret3); // 4
boolean isStrict ()
この書式で数値が厳密に解析される場合はtrue、それ以外の場合はfalseを返します。
final var format = NumberFormat.getNumberInstance();
System.out.println(format.isStrict()); // false
final var ret = format.parse("75%");
System.out.println(ret); // 75
format.setStrict(true);
System.out.println(format.isStrict()); // true
try {
var _ = format.parse("75%");
} catch (ParseException e) {
System.out.println(e);
}
// 結果
// ↓
//java.text.ParseException: Unparseable number: "75%"
Number parse (String source)
指定された文字列の先頭からテキストを解析して、Numberを生成します。
System.out.println(Locale.getDefault().toLanguageTag()); // ja-JP
final var format = NumberFormat.getNumberInstance();
final var ret1 = format.parse("123,000");
System.out.println(ret1); // 123000
System.out.println(ret1.getClass().getSimpleName()); // Long
final var ret2 = format.parse("0.123");
System.out.println(ret2); // 0.123
System.out.println(ret2.getClass().getSimpleName()); // Double
final var format = NumberFormat.getPercentInstance();
final var ret = format.parse("75%");
System.out.println(ret); // 0.75
System.out.println(ret.getClass().getSimpleName()); // Double
final var format = NumberFormat.getCompactNumberInstance();
final var ret = format.parse("10万");
System.out.println(ret); // 100000
System.out.println(ret.getClass().getSimpleName()); // Long
abstract Number parse (String source, ParsePosition parsePosition)
指定された文字列の先頭からテキストを解析して、Numberを生成します。
final var format = NumberFormat.getNumberInstance(Locale.US);
final var source = "123 456";
final var pos = new ParsePosition(0);
final var ret1 = format.parse(source, pos);
System.out.println(ret1); // 123
System.out.println(pos.getIndex()); // 3
pos.setIndex(pos.getIndex() + 1);
final var ret2 = format.parse(source, pos);
System.out.println(ret2); // 456
System.out.println(pos.getIndex()); // 7
final var ret3 = format.parse(source, pos);
System.out.println(ret3); // null
final Object parseObject (String source, ParsePosition pos)
指定された文字列からテキストを解析してオブジェクトを生成します。
final var format = NumberFormat.getNumberInstance(Locale.US);
final var source = "123 456";
final var pos = new ParsePosition(0);
final var ret1 = format.parseObject(source, pos);
System.out.println(ret1); // 123
System.out.println(pos.getIndex()); // 3
pos.setIndex(pos.getIndex() + 1);
final var ret2 = format.parseObject(source, pos);
System.out.println(ret2); // 456
System.out.println(pos.getIndex()); // 7
final var ret3 = format.parseObject(source, pos);
System.out.println(ret3); // null
void setCurrency (Currency currency)
通貨値のフォーマット時に、この数値フォーマットが使用する通貨を設定します。
System.out.println(Locale.getDefault().toLanguageTag()); // ja-JP
final var number = 1234;
final var format = NumberFormat.getCurrencyInstance();
System.out.println(format.format(number)); // ¥1,234
System.out.println(format.getCurrency()); // JPY
format.setCurrency(Currency.getInstance(Locale.US));
format.setMinimumFractionDigits(2);
System.out.println(format.format(number)); // $1,234.00
System.out.println(format.getCurrency()); // USD
void setGroupingUsed (boolean newValue)
このフォーマットでグループ化を使用するかどうかを設定します。
System.out.println(Locale.getDefault().toLanguageTag()); // ja-JP
final var format = NumberFormat.getNumberInstance();
System.out.println(format.isGroupingUsed()); // true
System.out.println(format.format(1234567)); // 1,234,567
format.setGroupingUsed(false);
System.out.println(format.isGroupingUsed()); // false
System.out.println(format.format(1234567)); // 1234567
void setMaximumFractionDigits (int newValue)
数値の小数部分で許可される最大桁数を設定します。maximumFractionDigitsは、minimumFractionDigits以上である必要があります。
System.out.println(Locale.getDefault().toLanguageTag()); // ja-JP
final var format = NumberFormat.getNumberInstance();
System.out.println(format.getMinimumFractionDigits()); // 0
System.out.println(format.getMaximumFractionDigits()); // 3
System.out.println(format.format(0.01234)); // 0.012
System.out.println(format.format(456.0)); // 456
format.setMinimumFractionDigits(1);
format.setMaximumFractionDigits(4);
System.out.println(format.getMinimumFractionDigits()); // 1
System.out.println(format.getMaximumFractionDigits()); // 4
System.out.println(format.format(0.01234)); // 0.0123
System.out.println(format.format(456.0)); // 456.0
void setMaximumIntegerDigits (int newValue)
数値の整数部分で許可される最大桁数を設定します。maximumIntegerDigitsは、minimumIntegerDigits以上である必要があります。
System.out.println(Locale.getDefault().toLanguageTag()); // ja-JP
final var format = NumberFormat.getNumberInstance();
System.out.println(format.getMinimumIntegerDigits()); // 1
System.out.println(format.getMaximumIntegerDigits()); // 2147483647
System.out.println(format.format(1234567890)); // 1,234,567,890
System.out.println(format.format(1)); // 1
format.setMinimumIntegerDigits(3);
format.setMaximumIntegerDigits(8);
System.out.println(format.getMinimumIntegerDigits()); // 3
System.out.println(format.getMaximumIntegerDigits()); // 8
System.out.println(format.format(1234567890)); // 34,567,890
System.out.println(format.format(1)); // 001
void setMinimumFractionDigits (int newValue)
数値の小数部分で許可される最小桁数を設定します。minimumFractionDigitsは、maximumFractionDigits以下である必要があります。
System.out.println(Locale.getDefault().toLanguageTag()); // ja-JP
final var format = NumberFormat.getNumberInstance();
System.out.println(format.getMinimumFractionDigits()); // 0
System.out.println(format.getMaximumFractionDigits()); // 3
System.out.println(format.format(0.01234)); // 0.012
System.out.println(format.format(456.0)); // 456
format.setMinimumFractionDigits(1);
format.setMaximumFractionDigits(4);
System.out.println(format.getMinimumFractionDigits()); // 1
System.out.println(format.getMaximumFractionDigits()); // 4
System.out.println(format.format(0.01234)); // 0.0123
System.out.println(format.format(456.0)); // 456.0
void setMinimumIntegerDigits (int newValue)
数値の整数部分で許可される最小桁数を返します。minimumIntegerDigitsは、maximumIntegerDigits以下である必要があります。
System.out.println(Locale.getDefault().toLanguageTag()); // ja-JP
final var format = NumberFormat.getNumberInstance();
System.out.println(format.getMinimumIntegerDigits()); // 1
System.out.println(format.getMaximumIntegerDigits()); // 2147483647
System.out.println(format.format(1234567890)); // 1,234,567,890
System.out.println(format.format(1)); // 1
format.setMinimumIntegerDigits(3);
format.setMaximumIntegerDigits(8);
System.out.println(format.getMinimumIntegerDigits()); // 3
System.out.println(format.getMaximumIntegerDigits()); // 8
System.out.println(format.format(1234567890)); // 34,567,890
System.out.println(format.format(1)); // 001
void setParseIntegerOnly (boolean value)
数値を整数としてのみ解析するかどうかを設定します。
System.out.println(Locale.getDefault().toLanguageTag()); // ja-JP
final var format = NumberFormat.getNumberInstance();
System.out.println(format.isParseIntegerOnly()); // false
final var ret1 = format.parse("123");
System.out.println(ret1); // 123
final var ret2 = format.parse("4.567");
System.out.println(ret2); // 4.567
format.setParseIntegerOnly(true);
System.out.println(format.isParseIntegerOnly()); // true
final var ret3 = format.parse("4.567");
System.out.println(ret3); // 4
void setRoundingMode (RoundingMode roundingMode)
このNumberFormatで使用されるRoundingModeを設定します。
final var format = NumberFormat.getNumberInstance(Locale.US);
System.out.println(format.getMaximumFractionDigits()); // 3
System.out.println(format.getRoundingMode()); // HALF_EVEN
System.out.println(format.format(0.1114)); // 0.111
System.out.println(format.format(0.1115)); // 0.112
System.out.println(format.format(0.1116)); // 0.112
format.setRoundingMode(RoundingMode.UP);
System.out.println(format.getRoundingMode()); // UP
System.out.println(format.format(0.1114)); // 0.112
System.out.println(format.format(0.1115)); // 0.112
System.out.println(format.format(0.1116)); // 0.112
format.setRoundingMode(RoundingMode.DOWN);
System.out.println(format.getRoundingMode()); // DOWN
System.out.println(format.format(0.1114)); // 0.111
System.out.println(format.format(0.1115)); // 0.111
System.out.println(format.format(0.1116)); // 0.111
void setStrict (boolean strict)
解析する非厳密値を変更します。
final var format = NumberFormat.getNumberInstance();
System.out.println(format.isStrict()); // false
final var ret = format.parse("75%");
System.out.println(ret); // 75
format.setStrict(true);
System.out.println(format.isStrict()); // true
try {
var _ = format.parse("75%");
} catch (ParseException e) {
System.out.println(e);
}
// 結果
// ↓
//java.text.ParseException: Unparseable number: "75%"
Formatで宣言されたメソッド
format, formatToCharacterIterator, parseObject
「Java API 使用例 : Format」をご参照ください。
関連記事
国際化対応
- API 使用例
数値