 |
 |
●数データ−3.フォーマット処理 |
|
| このページでは数データのフォーマット処理に関するメソッドを紹介します。 |
フォーマット処理 |
|
数データに対し通貨記号($)をつけたり、通貨セパレータ(,)をつけるなどのフォーマット処理を行いたい場合があります。その際はNumberFormatクラスを使用して、数データに様々なフォーマット処理をほどこすことができます。
フォーマット処理においては、まずgetNumberInstanceやgetCurrencyInstanceなどNumberFormatクラスで用意されているファクトリメソッドを使用して、NumberFormatオブジェクトの作成を行います。その後そのオブジェクトよりformatメソッドを呼び出し、数データのフォーマット処理を行います。
|
|
戻り型
|
メソッド
|
説明
|
|
String
String
|
format(double)
format(Double)
format(long)
format(Long)
|
引数に指定された値のフォーマット処理を行います。
|
|
static NumberFormat
static NumberFormat
|
getNumberInstance(
) getNumberInstance(Locale)
|
汎用数値フォーマットを持つ、NumberFormatオブジェクトの生成を行います。ロケールの指定をした場合はそのロケールの情報をもつオブジェクトの生成を行います。
|
|
static NumberFormat
static NumberFormat
|
getCurrencyInstance(
) getCurrencyInstance(Locale)
|
通貨フォーマットを持つ、NumberFormatオブジェクトの生成を行います。ロケールの指定をした場合はそのロケールの情報をもつオブジェクトの生成を行います。
|
|
static NumberFormat
static NumberFormat
|
getPercentInstance(
) getPercentInstance(Locale)
|
パーセントフォーマットを持つ、NumberFormatオブジェクトの生成を行います。ロケールの指定をした場合はそのロケールの情報をもつオブジェクトの生成を行います。
|
|
|
|
【例1】数データに対し、汎用数値フォーマット処理、通貨フォーマット処理、パーセントフォーマット処理をそれぞれ行います。
|
import java.text.*;
public class ExNumber5 {
public static void main(String[] args) {
long exFormat1 = 1000000L;
long exFormat2 = 2000000L;
double exFormat3 = 0.50D;
NumberFormat exObject1 = NumberFormat.getNumberInstance(); //(1)
NumberFormat exObject2 = NumberFormat.getCurrencyInstance(); //(2)
NumberFormat exObject3 = NumberFormat.getPercentInstance(); //(3)
System.out.println(exObject1.format(exFormat1)); //(4)
System.out.println(exObject2.format(exFormat2)); //(5)
System.out.println(exObject3.format(exFormat3)); //(6)
}
}
|
|
|
【解説1】
|
| (1). |
getNumberInstanceメソッドを使用し、汎用数値フォーマットを持つNumberFormatオブジェクトの生成を行います。 |
| (2). |
getCurrencyInstanceメソッドを使用し、通貨フォーマットを持つNumberFormatオブジェクトの生成を行います。 |
| (3). |
getPercentInstanceメソッドを使用し、パーセントフォーマットを持つNumberFormatオブジェクトの生成を行います。 |
| (4). |
formatメソッドを使用し、引数に指定された値の汎用数値フォーマット処理を行います。 |
| (5). |
formatメソッドを使用し、引数に指定された値の通貨フォーマット処理を行います。 |
| (6). |
formatメソッドを使用し、引数に指定された値のパーセントフォーマット処理を行います。 |
D:\JAVA>javac
ExNumber5.java
D:\JAVA>java ExNumber5
1,000,000
¥2,000,000
50%
D:\JAVA> |
|
カスタムフォーマット処理 |
|
DecimalFormatクラスを使用することにより、より細かなフォーマット形式を指定することができます。DecimalFormatクラスはNumberFormatクラスのサブクラスです。
処理の流れは、まずコンストラクタの引数に実行したいパターンを指定して、DecimalFormatオブジェクトの生成を行います。その後、そのオブジェクトからformatメソッドを呼び出し、数データのフォーマット処理を行います。
|
|
メソッド
|
説明
|
|
DecimalFormat
( )
|
デフォルトロケールに対して、デフォルトのパターンを使用して、DecimalFormatオブジェクトの生成を行います。
|
|
DecimalFormat
(String)
|
デフォルトロケールに対して、指定されたパターンを使用して、DecimalFormatオブジェクトの生成を行います。
|
|
DecimalFormat
(String, DecimalFormatSymbols)
|
指定されたパターンと引数のDecimalFormatSymbolsオブジェクトで指定された記号を使用して、DecimalFormatオブジェクトの生成を行います。
|
|
|
|
パターン
|
説明
|
|
#
|
数字を表します。値が0の場合はその値は表示されません。
|
|
0
|
数字を表します。値が0の場合はその値には0が表示されます。
|
|
.(ドット)
|
整数値と小数値の区切りを表します。
|
|
,(カンマ)
|
数データのグループセパレータを表します。
|
|
%
|
数データを100倍し、%を付与します。
|
|
'(シングルクォーテーション)
|
フォーマット処理時にフォーマットパターンと捉えられたくないパターン記号を'(シングクォーテーション)で囲みます。(例)'#'
|
|
\u00A5
|
通貨記号を表します。
|
|
|
|
【例2】いくつかのパターンを使用して数データのフォーマット処理を行います。
|
import java.text.*;
public class ExNumber6 {
public static void main(String[] args) {
double exValue1 = 1251.24D;
DecimalFormat exFormat1 = new DecimalFormat("###,###.###"); //(1)
System.out.println(exFormat1.format(exValue1)); //(2)
double exValue2 = 1251.24D;
DecimalFormat exFormat2 = new DecimalFormat("000,000.000");
System.out.println(exFormat2.format(exValue2)); //(3)
double exValue3 = 1251.24D;
DecimalFormat exFormat3 = new DecimalFormat("\u00A5###,###");
System.out.println(exFormat3.format(exValue3)); //(4)
double exValue4 = 0.50D;
DecimalFormat exFormat4 = new DecimalFormat("###%");
System.out.println(exFormat4.format(exValue4)); //(5)
double exValue5 = 0.50D;
DecimalFormat exFormat5 = new DecimalFormat("'%'###%");
System.out.println(exFormat5.format(exValue5)); //(6)
}
}
|
|
|
【解説2】
|
| (1). |
パターンを指定して、DecimalFormatオブジェクトの生成を行います。 |
| (2). |
formatメソッドを呼び出し、値のフォーマットを行います。このパターンでは数値を3桁づつグルーピングしています。数値のない桁は表示されません。 |
| (3). |
このパターンでは数値を3桁づつグルーピングしています。数値のない桁は0が表示されます。 |
| (4). |
このパターンでは数値の先頭に通貨記号を付与しています。小数点以下はパターンがないため、四捨五入されます。 |
| (5). |
このパターンでは数値を100倍し、接尾に%を付与しています。 |
| (6). |
このパターンでは先頭の%は'(シングルクォーテーション)で囲まれているためフォーマット化されず、そのまま表記されます。 |
D:\JAVA>javac
ExNumber6.java
D:\JAVA>java ExNumber6
1,251.24
001,251.240
\1,251
50%
%50%
D:\JAVA> |
|
ロケールの指定 |
|
NumberFormatクラス、DecimalFormatクラスを使用する際、その出力結果は現在設定しているロケールに深く依存します。
ロケールとはその地域独自の言語体系、通貨体系、数値体系を言います。ロケールが日本である場合、通貨フォーマットを使用すると通貨記号は\が表示されます。ロケールが米国である場合、通貨フォーマットを使用すると通貨記号は$が表示されます。
現在のロケールを表示したり、ロケールの変更を行う場合はLocaleクラスのgetDefaultメソッドやsetDefaultメソッドが利用できます。また、NumberFormatオブジェクトを生成する際、getNumberInstanceなどファクトリメソッドの引数にロケールを指定することでそのフォーマットにおけるロケールを変更することもできます。
|
|
戻り型
|
メソッド
|
説明
|
|
static Locale
|
getDefault(
)
|
該当インスタンスに対するデフォルトロケールの現在の値を返します。
|
|
static void
|
setDefault(Locale)
|
該当インスタンスに対するロケールの設定を行います。
|
|
|
|
【例3】LocaleクラスのsetDefaultメソッドを使用してロケールの設定を行います。
|
import java.text.*;
import java.util.*;
public class ExNumber7 {
public static void main(String[] args) {
System.out.println(Locale.getDefault()); //(1)
Locale.setDefault(Locale.US); //(2)
NumberFormat exValue = NumberFormat.getCurrencyInstance(); //(3)
System.out.println(exValue.format(10000)); //(4)
}
}
|
|
|
【解説3】
|
| (1). |
getDefaultメソッドで現在のデフォルトロケール値を取得して表示します。 |
| (2). |
setDefaultメソッドでデフォルトロケールの指定を米国に変更します。 |
| (3). |
getCurrencyInstanceメソッドで通貨フォーマットを持つNumberFormatオブジェクトの生成を行います。 |
| (4). |
formatメソッドを使用し、デフォルトロケール(米国)での通貨フォーマット処理を行います。 |
| ※ |
setDefaultメソッドの引数に指定されたロケール定数の一覧はこちらを参照してください。 |
D:\JAVA>javac
ExNumber7.java
D:\JAVA>java ExNumber7
ja_JP
$10,000.00
D:\JAVA> |
|
|
【例4】NumberFormatオブジェクトを生成する際、ファクトリメソッドの引数にロケールを指定してロケールの変更を行います。
|
import java.text.*;
import java.util.*;
public class ExNumber8 {
public static void main(String[] args) {
NumberFormat exValue =
NumberFormat.getCurrencyInstance(Locale.UK); //(1)
System.out.println(exValue.format(10000)); //(2)
}
}
|
|
|
【解説4】
|
| (1). |
getCurrencyInstanceメソッドの引数に英国のロケールを指定してNumberFormatオブジェクトの生成を行います。 |
| (2). |
formatメソッドを使用し、デフォルトロケール(英国)での通貨フォーマット処理を行います。 |
| ※ |
ファクトリメソッド(getCurrencyInstance)の引数に指定されたロケール定数の一覧はこちらを参照してください。 |
D:\JAVA>javac
ExNumber8.java
D:\JAVA>java ExNumber8
£10,000.00
D:\JAVA> |
|
|
数データ |
|
|
|
| 3.フォーマット処理 |
|
|
|
 |
|
 |
 |