首页 > 解决方案 > 将输入文本值传递给 DecimalFormat 时出错

问题描述

我想将输入文本值传递为十进制格式。将值以十进制格式保存在数据库中。但我在代码下方出现错误。任何人都可以解释代码的错误。

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

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

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

标签: javastringdecimalformat

解决方案


这里有几个问题。

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

推荐阅读