将输入文本值传递给 DecimalFormat 时出错
Error when passing the input text value to DecimalFormat
我想将输入文本值传递为十进制格式。将值以十进制格式保存在数据库中。但我在代码下方遇到错误。谁能解释一下代码的错误。
DecimalFormat decimalformat = new DecimalFormat("#.00");
String dp = decimalformat.format(mf.getParameter("pprice"));
product.setPrice((Double.parseDouble(dp)));
java.lang.IllegalArgumentException: Cannot format given Object as a
Number at java.text.DecimalFormat.format(DecimalFormat.java:507) at
java.text.Format.format(Format.java:157) at
Servlet.product.save_product.doPost(save_product.java:66)
<input type="text" class="form-control" placeholder="0.00" name="pprice"/>
这里有几个问题。
- 如评论中所述,您不能为
DecimalFormat.format
方法提供 String
值。它需要是 Number
的子类型。这可以通过将 mf.getParameter("pprice"))
的响应解析为双精度来解决。像这样:
decimalformat.format(Double.parseDouble(mf.getParameter("pprice")));
- 当您之后将其转换回 Double 时,这样做根本没有意义。你不妨做
product.setPrice(Double.parseDouble(mf.getParameter("pprice")));
。格式无论如何都会丢失。
我想将输入文本值传递为十进制格式。将值以十进制格式保存在数据库中。但我在代码下方遇到错误。谁能解释一下代码的错误。
DecimalFormat decimalformat = new DecimalFormat("#.00");
String dp = decimalformat.format(mf.getParameter("pprice"));
product.setPrice((Double.parseDouble(dp)));
java.lang.IllegalArgumentException: Cannot format given Object as a Number at java.text.DecimalFormat.format(DecimalFormat.java:507) at java.text.Format.format(Format.java:157) at Servlet.product.save_product.doPost(save_product.java:66)
<input type="text" class="form-control" placeholder="0.00" name="pprice"/>
这里有几个问题。
- 如评论中所述,您不能为
DecimalFormat.format
方法提供String
值。它需要是Number
的子类型。这可以通过将mf.getParameter("pprice"))
的响应解析为双精度来解决。像这样:decimalformat.format(Double.parseDouble(mf.getParameter("pprice")));
- 当您之后将其转换回 Double 时,这样做根本没有意义。你不妨做
product.setPrice(Double.parseDouble(mf.getParameter("pprice")));
。格式无论如何都会丢失。