我似乎无法理解这一点。如果尝试过以下方法:
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我可以防止这种情况,但它似乎导致了我更多的头痛。
答案 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")
的字符串