使用するメインクラス:java.text.decimalformat
1。オブジェクトをインスタンス化するには、次の2つの方法を使用できます。
コードコピーは次のとおりです。
Decimalformat df =(decimalformat)numberformat.getInstance();
Decimalformat df1 =(decimalformat)decimalformat.getInstance();
DecimalformatはNumberformatから継承するためです。
2。小数点以下の場所の数を設定します
システムは、次のような小数点以下の小数の場所にデフォルトです。
コードコピーは次のとおりです。
Decimalformat df =(decimalformat)numberformat.getInstance();
System.out.println(df.Format(12.3456789));
出力:12.346
これで、次の方法で小数を2桁に設定できます。
コードコピーは次のとおりです。
df.setmaximumfractiondigits(2);
System.out.println(df.Format(12.3456789));
次に、出力は次のとおりです。12.35
3。数値をパーセント出力に変換する方法は2つあります。
(1)
コードコピーは次のとおりです。
df.applypattern( "##。##%");
System.out.println(df.Format(12.3456789));
System.out.println(df.Format(1));
System.out.println(df.format(0.015));
出力は:1234.57%100%1.5%
(2)
コードコピーは次のとおりです。
df.setmaximumfractiondigits(2);
system.out.println(df.format(12.3456789*100)+"%");
System.out.println(df.Format(1*100)+"%");
System.out.println(df.format(0.015*100)+"%");
出力は次のとおりです。
1,234.57%100%1.5%
4。グループサイズを設定します
コードコピーは次のとおりです。
Decimalformat df1 =(decimalformat)decimalformat.getInstance();
df1.setgroupingsize(2);
System.out.println(df1.format(123456789));
出力:1,23,45,67,89
DF1.SetGroupingUsed(false)によるグループ化設定を無効にすることもできます。
コードコピーは次のとおりです。
Decimalformat df1 =(decimalformat)decimalformat.getInstance();
df1.setgroupingsize(2);
df1.setgroupingused(false);
System.out.println(df1.format(123456789));
出力:123456789
5。小数を2桁に設定します
コードコピーは次のとおりです。
Decimalformat df2 =(decimalformat)decimalformat.getInstance();
df2.applypattern( "0.00");
system.out.println(df2.format(1.2));
出力:1.20
時々、出力番号の形式を制御する必要があります。
この形式は気にしないかもしれませんが、次のような単純な声明は地域に依存していることを気にする必要があります。
System.out.println(1234.56);
米国では、「。」は小数点ですが、必ずしも他の場所ではありません。これに対処する方法は?
java.textパッケージの一部のパッケージは、このタイプの問題を処理できます。次の簡単な例では、これらのクラスを使用して、上記の問題を解決します。
コードコピーは次のとおりです。
java.text.numberformatをインポートします。
java.util.localeをインポートします。
パブリッククラスdecimalformat1 {
public static void main(string args []){
//ローカルデフォルト形式を取得します
numberformat nf1 = numberformat.getInstance();
System.out.println(nf1.format(1234.56));
//ドイツ形式を取得します
Numberformat nf2 =
numberformat.getInstance(locale.german);
System.out.println(nf2.format(1234.56));
}}
あなたが米国にいる場合、プログラムを実行した後、出力:
1,234.56
1.234,56
言い換えれば、さまざまな習慣を使用して、さまざまな場所で数字を表します。
numberformat.getInstance()メソッドは、ローカル設定に基づいて数値をフォーマットするのに適したNumberformatのインスタンス(実際、DecimalFormatなどのNumberformatの特定のサブクラス)を返します。ドイツなどの非デフォルト地域設定も使用できます。フォーマット法は、特定の地域ルールに従って数値をフォーマットします。このプログラムは、単純な形式でも使用できます。
numberformat.getInstance()。形式(1234.56)
ただし、フォーマットを保存してから再利用する方が効率的です。国際化は、数値をフォーマットする際の大きな問題です。
もう1つは、この問題を解決するための簡単な例です。
コードコピーは次のとおりです。
java.text.decimalformatをインポートします。
java.util.localeをインポートします。
パブリッククラスdecimalformat2 {
public static void main(string args []){
//ローカルデフォルト形式を取得します
Decimalformat df1 = new Decimalformat( "### .000");
System.out.println(df1.format(1234.56));
//ドイツ形式を取得します
locale.setDefault(locale.german);
Decimalformat df2 = new Decimalformat( "### .000");
System.out.println(df2.format(1234.56));
}
}
この例では、「#### .000」などのシンボルを使用して、番号形式が設定されています。このモードは、小数点の前に4つの数字があることを意味します。プログラム出力:
1234.560
1234,560
同様に、指数形式の形式も制御できます。
コードコピーは次のとおりです。
java.text.decimalformatをインポートします。
パブリッククラスdecimalformat3 {
public static void main(string args []){
Decimalformat df = new Decimalformat( "0.000E0000");
System.out.println(df.Format(1234.56));
}
}
出力:
1.235E0003
パーセンテージの場合:
コードコピーは次のとおりです。
java.text.numberformatをインポートします。
public class decimalformat4 {
public static void main(string args []){
numberformat nf = numberformat.getPercentInstance();
System.out.println(nf.Format(0.47));
}
}
出力:
47%
これまでのところ、数値をフォーマットするためのいくつかの異なる手法を見てきました。一方、フォーマットされた番号を含む文字列を読み取り、解析するにはどうすればよいですか?解像度サポートはNumberformatに含まれています。例えば:
コードコピーは次のとおりです。
java.util.localeをインポートします。
java.text.numberformatをインポートします。
java.text.parseexceptionをインポートします。
public class decimalformat5 {
public static void main(string args []){
//ローカル形式
numberformat nf1 = numberformat.getInstance();
オブジェクトobj1 = null;
//フォーマットベースの解析
試す {
obj1 = nf1.parse( "1234,56");
}
catch(parseexception e1){
System.err.println(e1);
}
System.out.println(obj1);
//ドイツ形式
Numberformat nf2 =
numberformat.getInstance(locale.german);
オブジェクトobj2 = null;
//フォーマットベースの解析
試す {
obj2 = nf2.parse( "1234,56");
}
catch(parseexception e2){
System.err.println(e2);
}
System.out.println(obj2);
}
}
この例は2つの部分に分かれており、どちらも文字列「1234,56」を解析します。最初の部分はローカル形式を使用して解析しますが、2番目の部分はドイツ形式を使用して解析します。プログラムが米国で実行されると、結果は次のとおりです。
123456
1234.56
言い換えれば、「1234,56」は、米国では123456の巨大な整数であり、ドイツでは「1234.56」の小数と見なされます。
ディスカッションをフォーマットする最後の質問もあります。上記の例では、DecimalFormatとNumberformatの両方が使用されます。 Decimalformatは、多くの場合、優れたフォーマットコントロールを取得するために使用されますが、Numberformatはローカルとは異なる領域を指定するために使用されることがよくあります。 2つのカテゴリを組み合わせる方法は?
答えは、DecimalformatがNumberformatのサブクラスであり、そのインスタンスが特定の領域として指定されているという事実を中心に展開します。したがって、numberformat.getInstanceを使用して領域を指定してから、構造を小数点図オブジェクトにキャストできます。ドキュメントでは、この手法はほとんどの場合に適用できるが、コンバージョンが正しく機能しない場合に備えて、キャストを囲むためにトライ/キャッチブロックを使用する必要がある(おそらく非常に目立たない状況で奇妙な領域を使用する必要がある)。これが次のような例です。
コードコピーは次のとおりです。
java.text.decimalformatをインポートします。
java.text.numberformatをインポートします。
java.util.localeをインポートします。
public class decimalformat6 {
public static void main(string args []){
Decimalformat df = null;
// numberformatオブジェクトを取得します
// DecimalFormatオブジェクトにキャストします
試す {
df =(decimalformat)
numberformat.getInstance(locale.german);
}
catch(classcastexception e){
System.err.println(e);
}
//フォーマットモードを設定します
df.ApplyPattern( "####。00000");
//番号をフォーマットします
System.out.println(df.Format(1234.56));
}
}
getInstance()メソッドはフォーマットを取得し、ApplyPattern()メソッドを呼び出してフォーマットモードを設定し、出力します。
1234,56000
国際化を気にしない場合は、DecimalFormatを直接使用できます。