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() 有一个讨厌的习惯,即只使用一个小数位。

例如通过 200。我在我的项目对象中得到 200.0。我想通过使用 DecimalFormat 可以防止这种情况发生,但似乎这反而让我更加头疼。

4

2 回答 2

1

当您说您通过 200 并获得 200.0 时,您的意思是您获得双倍值?如果是这样,那没关系 - 它是一个数字,200 = 200.0 表示双精度值。

于 2013-09-26T21:33:41.500 回答
0

format(...) 将 double 值转换为 String 值。你有它相反的方式。这就是你得到异常的原因。

如果价格变量实际上是双倍,你应该这样做

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

但我认为你希望价格是一个字符串,那么你应该将文本从 EditText 转换为双精度,然后将双精度转换回字符串,例如new DecimalFormat("0.00")

于 2013-09-26T21:43:47.293 回答