入力は8.7000000
のようになり、8.70 EUR
のようにフォーマットしたいと思います。 DecimalFormat
クラスの使用を検討しました。
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桁の数字を付けるように指示するにはどうすればよいですか?
また、整数を使用してすべての通貨を格納することについてのJonSkeetのポイントをここで強調したいと思います-お金で浮動小数点の丸め誤差を処理したくありません。
使用する .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);
私は以下のこのリンクで素晴らしい解決策を見つけました
http://docs.Oracle.com/javase/tutorial/i18n/format/decimalFormat.html
要するに、92323345465.30のような通貨を92,323,345,465.30として表すには、###、###、###、###。00を使用します。
つまり、「0」を使用すると、「0」は別の数字に置き換えられるか、置き換える数字がない場合は表示されます。ただし、「#」を使用している場合、「#」を置き換える番号がない場合、そのスペースは空になります。
書式設定の前、または書式設定文字列の後に、$などの独自の記号を追加することもできます。
私は良い選択肢はこのアプローチだと思います:
#,###.00
を使用すると、値0.50の結果は次のように表示されます。
$、50
ただし、#,##0.00
を使用すると、同じ値の結果は次のようになります。
$ 0,50