数値の表示をフォーマットする
NumberFormat classやDecimalFormat classを使って数値の表示書式を編集できます。
import java.text.*;
public class ExamNumberFormat1 {
public static void main(String[] args) {
NumberFormat nf = NumberFormat.getInstance();
System.out.println(nf.format(12345.67));
}
}
class ExamDecimalFormat1 {
public static void main(String[] args) {
DecimalFormat df = new DecimalFormat("###,###,##0.00");
DecimalFormat df2 = new DecimalFormat("###,###,##0.00;###,###,##0.00-");
System.out.println(df.format(0012345.1));
System.out.println(df.format(0));
System.out.println(df.format(-0012345.0));
System.out.println(df2.format(0012345.1));
System.out.println(df2.format(0));
System.out.println(df2.format(-0012345.0));
}
}
import java.text.*;
import java.util.*;
class ExamDecimalFormat2 {
public static void main(String[] args) {
DecimalFormat df
= (DecimalFormat)DecimalFormat.getInstance(Locale.GERMAN);
df.applyPattern("###,###,##0.00;###,###,##0.00-");
System.out.println(df.format(0012345.1));
System.out.println(df.format(-0012345.0));
}
}
<実行結果>
| ExamNumberFormat1 | コンソール画面に 12,345.67 と表示されます。 getInstance メソッドで自国の表記書式に対応したNumberFormat Instanceを入手できます。 例えば、小数点を表す表記は日本では"."でドイツでは","になります NumberFormat class はabstract classなので、newでインスタンスを生成することはできません。 |
|
ExamDecimalFormat1 |
コンソール画面に 12,345.10 0.00 -12,345.00 12,345.10 0.00 12,345.00- と表示されます。 DecimalFormatクラスを使うとユーザーが任意の書式を設定できます。 上の例では、先頭の0を表示しない、小数点以下2桁の書式をコンストラクタで設定しています。 df2のコンストラクタは1つ目のパターンは正の数の場合、2つ目のパターンは負の数の場合のパターンです。 defaultでは"-"は左表示(prefix)になるので、右表示(suffix)したい場合はこのように記述します。 もちろんこれ以外にも書式設定が可能ですから、API Documentを参照してください。 |
|
ExamDecimalFormat2 |
コンソール画面に 12.345,10 12.345,00- と表示されます。 1000の区切り文字や、小数点の表記がコーディングと異なっていることに注目してください。 このsampleは、直接DecimalFormat classをnewせずに、 getInstance methodでNumberFormatを入手し、DecimalFormatにcastしています。 NumberFormat instanceは自国の(もしくは指定したlocaleの)書式に対応しています。 castした後に、applyPattern method で表示書式の追加設定が可能です。 先頭の0の非表示や、1000の区切りの有無は、ユーザーが指定していますが、1000の区切り記号、小数点を表す記号は、localeが採用されています。 sampleではlocae(German)を指定していますが、defaultのlocaleにしておけば、国際化対応が可能です。 |
DecimalFormat classを使えば、文字列を数値に変換することも可能です。