6

printfグループ化区切り文字として コンマを使用して、次のような形式で値を出力する方法を知っています。1,000,000.00

そのように印刷するには、コマンドを使用しています

System.out.printf ("%,.2f", value);

しかし、次のような値をフォーマットするためのグループ化区切り文字としてスペースを使用する方法 1 000 000.00

私は解決策を見つけようとしましたがDecimalFormat、私を複雑にするために今見てください(初心者レベル)を使用した解決策。 例のようにカンマを使ってそれを行う簡単な方法はありますか?

4

3 に答える 3

8

素早い答え:

String result = String.format("%,.2f", value).replace(".", " ");
System.out.println(result);

(Java 1.5 以上を使用していると仮定します)。

使用DecimalFormat:

DecimalFormat formatter = (DecimalFormat) NumberFormat.getInstance(Locale.getDefault());
DecimalFormatSymbols symbols = formatter.getDecimalFormatSymbols();
String.format(symbols.getGroupingSeparator(), ' ')

またはさらに良い:

symbols.setGroupingSeparator(' ');
f = new DecimalFormat("###,###.00", symbols);
System.out.println(f.format(value));
于 2012-11-09T11:35:19.170 に答える
1

Printf はこれを処理しません。挿入された println を使用します。oracleからの例:

DecimalFormatSymbols unusualSymbols = new DecimalFormatSymbols(currentLocale);
unusualSymbols.setDecimalSeparator('|');
unusualSymbols.setGroupingSeparator('^');

String strange = "#,##0.###";
DecimalFormat weirdFormatter = new DecimalFormat(strange, unusualSymbols);
weirdFormatter.setGroupingSize(4);

String bizarre = weirdFormatter.format(12345.678);
System.out.println(bizarre);

out : 1^2345|678

浮動小数点数を文字列に変換するには:

println はFloatingDecimalを使用します

printf はFormattedFloatingDecimalを使用します

しかし、これらのクラスが異なる理由を詳しく調べる時間はありません。読書を楽しむ :)

于 2012-11-09T11:35:56.167 に答える
0

あなたがそれをしたい場合は、Decimalformatを使用する必要があります。これが解決策になります

DecimalFormat f = new DecimalFormat("#0,000.00");

f.format(13000);

ここでちょっとした説明: コンマの後のゼロの量は、DecimalFormat がそこにドットを挿入する数値の量を示します。ドットの後のゼロの量は、DecimalFormat が書き込む小数の量です。

編集:ああ、あなたがそこにスペースを入れたいと思ったのを見ました:

f.format は文字列を返すため、単純に追加できます.replace("\\.", " ");

方法。これにより、そこに書かれたすべてのドットがスペースに置き換えられます

于 2012-11-09T11:25:37.310 に答える