2

良い一日。

Javaで数値をフォーマットする必要があります。これまでのところ私はこれを持っています:

DecimalFormat df2 = new DecimalFormat( "#,###,###,##0.00" );
System.out.println(new Double(df2.format(balance)).doubleValue());

しかし、それはこれを印刷します

110.0
121.0
133.1
146.41
161.05

ただし、小数部が2桁である必要があります。どうすればいいのですか?

4

6 に答える 6

2

フォーマットされた文字列からdouble値を取得する必要はありません。format()のメソッドから返されるフォーマットされた文字列を使用するだけですDecimalFormat。したがって、コードは次のようになります。

DecimalFormat df2 = new DecimalFormat( "#,###,###,##0.00" );
...
System.out.println(df2.format(balance));

元のコード:

System.out.println(new Double(df2.format(balance)).doubleValue());

コードで行ったことは、double値をstringにフォーマットすることです(これは、DecimalFormatインスタンスで指定したとおりにフォーマットされます)。次に、フォーマットされた文字列をインスタンスに変換しDouble、オブジェクトからdouble値を取得します。これはdoubleです。そしてそれをコンソールに印刷しました。したがって、フォーマットされた文字列はなくなり、double値が通常どおりに出力されます。

于 2012-11-12T09:32:13.400 に答える
1

「しかし、小数部が2桁である必要があります。どうすればよいですか?」

DecimalFormat df2 = new DecimalFormat( );
df2.setMinimumFractionDigits(2);
df2.setMaximumFractionDigits(2);

System.out.println(df2.format(balance));
于 2012-11-12T09:31:13.647 に答える
0

このパターンをフォーマットに試してください#,###,###,##.##-

DecimalFormat df2 = new DecimalFormat( "#,###,###,##.##" );
System.out.println(df2.format(balance));
于 2012-11-12T09:28:19.440 に答える
0

これで十分です。

DecimalFormat df2 = new DecimalFormat("#,##0.00");
System.out.println(df2.format(balance));

セパレーターのグループ化は、「最後の1つと整数の終わりの間の間隔」に従います。したがって、過剰に指定してもメリットはありません。のドキュメントからの例DecimalFormat

グループ化セパレーターは一般的に数千に使用されますが、一部の国では1万を分離します。グループ化サイズは、グループ化文字間の一定の桁数です。たとえば、100,000,000の場合は3、1,0000,0000の場合は4です。複数のグループ化文字を含むパターンを指定する場合、最後の文字と整数の終わりの間の間隔が使用されます。だから"#,##,###,####" == "######,####" == "##,####,####"

もう1つは、.format()メソッドがすでに文字列を出力しているため、それをに変換しても意味がないということdoubleです。balanceが1000を超えると、例外がスローされます(区切り文字が有効になり、Doubleクラスが区切り文字で文字列を解析できないポイント)。

于 2012-11-12T09:30:59.837 に答える
0

setMinimumFractionDigits次の方法を使用することもできますDecimalFormat

df2.setMinimumFractionDigits(2);
于 2012-11-12T09:31:19.927 に答える
0

10進数の形式は正しいですが、これを印刷する前に行っているnew Double(df2.format(balance))のは、形式を無視するdoubleの新しいインスタントを作成することです。

したがって、値を表示またはログに記録する場合 df2.format(balance)は、これで十分です。

すなわち:

System.out.println(df2.format(balance));
于 2012-11-12T09:36:35.523 に答える