13

入力は次のようになり、次のよう8.7000000にフォーマットしたいと思います8.70 EURDecimalFormatクラスの使用を検討しました:

Double number = Double.valueOf(text);

DecimalFormat dec = new DecimalFormat("#.## EUR");
String credits = dec.format(number);

TextView tt = (TextView) findViewById(R.id.creditsView);
tt.setText(credits);

結果は8.7 EURです。の後に 2 桁の数字があるようにフォーマッタに指示するにはどうすればよい.ですか?

4

3 に答える 3

28

また、整数を使用してすべての通貨を格納することに関する Jon Skeet のポイントをここで強調したいと思います - お金で浮動小数点の丸めエラーを処理したくない.

.00の代わりに使用.##-0は数字を#意味し、数字を意味します (ただし、ゼロに等しい場合は非表示にします)。

Double number = Double.valueOf(text);

DecimalFormat dec = new DecimalFormat("#.00 EUR");
String credits = dec.format(number);

TextView tt = (TextView) findViewById(R.id.creditsView);
tt.setText(credits);

または使用setMinimumFractionDigits

Double number = Double.valueOf(text);

DecimalFormat dec = new DecimalFormat("#.## EUR");
dec.setMinimumFractionDigits(2);
String credits = dec.format(number);

TextView tt = (TextView) findViewById(R.id.creditsView);
tt.setText(credits);
于 2011-12-21T13:42:42.490 に答える
5

以下のこのリンクで素敵な解決策を見つけました

http://docs.oracle.com/javase/tutorial/i18n/format/decimalFormat.html

つまり、92323345465.30 のような通貨を 92,323,345,465.30 として表すには、###,###,###,###.00 を使用するだけです

つまり、「0」を使用するたびに、「0」は別の数字に置き換えられるか、置き換える数字がない場合は表示されます! しかし、「#」を使用している場合、「#」を置き換える数字がない場合、そのスペースは空になります。

$ などの独自の記号をフォーマットの前またはフォーマット文字列の後に追加することもできます。

于 2013-12-02T11:09:05.630 に答える
3

良いオプションはこのアプローチだと思います:

値 0.50 の結果を使用#,###.00すると、次のように表示されます。

50 ドル

ただし、#,##0.00同じ値の結果を使用すると、次のようになります。

$0.50

于 2017-10-19T13:18:42.207 に答える