1

わかりましたので、これについて2時間検索してきました。ジャンプしてこれを重複としてマークする前に、質問を見てください。

数字を含む文字列がいくつかあります

数値はすべてこのようになります

String one = 611960;
String two = 64850;
String three = 0;
String four = 636;

これらを次のように正しい形式で使用できるようにしたい

6,119.60 648.50 0.00 6.36

私が試してみました

DecimalFormat df = new DecimalFormat("#,###,###,##0.00");

String を double に変換します。

double amount = Double.parseDouble(one);

611960.0 を与えるようです

それから私はします

String gfeeOne = df.format(amount);

これにより、611,960.00 が得られます

だから、この段階で私は少し迷っています。これは簡単なはずですが、おそらく私は迷子になっています。このようなものまでのすべてのケースをカバーしたい 1000000000 例 1,000,000,000.00

大変助かりました

4

2 に答える 2

8

あなたが持っている文字列は、整数として解釈されます。これは、小数点区切り文字が含まれていないためです (これはロケールに依存します。注意してください...)。したがって、基本的には、数値を 100 で割るだけで済みます。つまり、小数点を 2 桁左に移動するだけです。

試してみてください:

double amount = Double.parseDouble(one)/100.0;

または、さらに良いことに、基本的な浮動小数点の丸めの問題から解放され、BigDecimalを使用できます。

BigDecimal amount = new BigDecimal(one).movePointLeft(2);
String gfeeOne = df.format(amount);

非常に大きな値が考慮される場合は警告BigDecimalします。浮動小数点数は精度を失う可能性がありますが、精度を維持するため、必ず を使用してください。

于 2012-12-19T15:27:06.477 に答える
3

String.Format を使用することもできます。

String one = String.Format("%,.2f", (double)611960);

(double)整数値を浮動小数点値に変換します。フォーマット文字列%,.2fは、浮動小数点数 ( f) を小数点以下 2 桁 ( ) の文字列表現に変換し、.2グループ区切り記号 ( ,) を追加します。

于 2012-12-19T15:34:35.800 に答える