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

标签 java string 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"/>

最佳答案

这里有几个问题。

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

关于java - 将输入文本值传递给 DecimalFormat 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53390061/

相关文章:

java - 将 EML 转换为 MSG - Java

python - Perl 对应的 Python 前缀 r"text"的字符串文字?

Java DecimalFormat - linux 中不正确的数字格式

java - 特定情况下的舍入

java - PreparedStatement 如何在 Java 中内部工作 : How compilation & caching of SQL works

java - 找不到类 [de.flapdoodle.embed.process.config.IRuntimeConfig]

c - 尝试创建子字符串时断言失败错误

Java网站解析器

java - 对于特定情况,DecimalFormat 未正确舍入

java - "The constructor Window(int, int, String, Game) is undefined "