0

私はこれについて頭をつかむことができないようです。次のアプローチを試した場合:

DecimalFormat df = new DecimalFormat("00000.00");

DecimalFormat df = new DecimalFormat("######.##");

ただし、次の行は常に IllegalArgumentException を生成します。

double price = Double.valueOf(df.format(((EditText) view
                .findViewById(R.id.edit_item_price)).getText().toString()));
// Sample input passed is value of 200 or some other whole number.
item.setPrice(price);

このフォーラムの明らかな解決策をコピーしただけなので、意味がありません。あなたのほとんどは format() が機能するようになりました。

もともと、これらのコード行はありませんでした。商品価格を取得した後、setPrice() メソッドを呼び出すだけです。これは機能します。ただし、Double.valueOf() には、小数点以下 1 桁しか使用しないという厄介な癖があります。

たとえば、200 を渡しました。アイテム オブジェクト内で 200.0 を取得します。私は DecimalFormat を使用することでこれを防ぐことができたと考えましたが、代わりにこれがより多くの頭痛の種になったようです。

4

2 に答える 2

1

200 を渡して 200.0 が得られると言うのは、2 倍の値で得られるということですか? もしそうなら、それは問題ではありません - それは数値であり、200 = 200.0 は double 値です。

于 2013-09-26T21:33:41.500 に答える
0

format(...) は double 値を String 値に変換します。あなたはそれを逆に持っています。そのため、例外が発生します。

価格変数が実際に double の場合は、実行する必要があります

double price = Double.valueOf(((EditText) view .findViewById(R.id.edit_item_price)).getText().toString())

しかし、価格を文字列にしたい場合は、テキストを EditText から double に変換し、その double を次のような文字列に戻す必要があります。new DecimalFormat("0.00")

于 2013-09-26T21:43:47.293 に答える