将输入文本值传递给DecimalFormat时出错

时间:2018-11-20 09:38:02

标签: java string decimalformat

我想将输入的文本值传递给十进制格式。将值以十进制格式保存在数据库中。但是我在代码下面出现了错误。谁能解释代码的错误。

DecimalFormat decimalformat = new DecimalFormat("#.00");
String dp = decimalformat.format(mf.getParameter("pprice"));
product.setPrice((Double.parseDouble(dp)));
  

java.lang.IllegalArgumentException:无法将给定对象格式化为   编号为java.text.DecimalFormat.format(DecimalFormat.java:507)的数字   java.text.Format.format(Format.java:157)在   Servlet.product.save_product.doPost(save_product.java:66)

<input type="text" class="form-control" placeholder="0.00" name="pprice"/>

1 个答案:

答案 0 :(得分:2)

这里有两个问题。

  1. 如评论中所述,您不能为DecimalFormat.format方法提供一个String值。它必须是Number的子类型。这可以通过将mf.getParameter("pprice"))的响应解析为双精度来解决。像这样: decimalformat.format(Double.parseDouble(mf.getParameter("pprice")));
  2. 当您随后将其转换回Double时,这样做根本没有意义。你不妨做 product.setPrice(Double.parseDouble(mf.getParameter("pprice")));。格式仍然丢失。