java Double.valueOf()返回带有一个小数位的数字

时间:2013-09-26 21:27:21

标签: android number-formatting decimalformat

我似乎无法理解这一点。如果尝试过以下方法:

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()有一个只使用一个小数位的恶习。

e.g。传递200.我的item对象中有200.0。我想通过使用DecimalFormat我可以防止这种情况,但它似乎导致了我更多的头痛。

2 个答案:

答案 0 :(得分:1)

当你说你通过200而你获得200.0时,你的意思是你得到它的双倍值?如果是这样,那也没关系 - 它是一个数字,对于双值来说是200 = 200.0。

答案 1 :(得分:0)

format(...)将double值变为String值。你反过来了。这就是你得到例外的原因。

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

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

但我认为您希望价格是一个字符串,那么您应该将EditText中的文本转换为double,然后将其转换为类似于new DecimalFormat("0.00")的字符串