Ошибка при передаче входного текстового значения в 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"/>

person Poorna Senani Gamage    schedule 20.11.2018    source источник
comment
Что именно возвращает mf.getParameter("pprice")?   -  person ernest_k    schedule 20.11.2018
comment
возвращает строковое значение   -  person Poorna Senani Gamage    schedule 20.11.2018
comment
Строка не поддерживается методом форматирования. Это должен быть экземпляр Number. См. stackoverflow.com/questions/45274167/   -  person Espen S.    schedule 20.11.2018


Ответы (1)


Здесь есть пара проблем.

  1. Как упоминалось в комментариях, вы не можете предоставить методу DecimalFormat.format значение String. Он должен быть подтипом Number. Это можно решить, проанализировав ответ mf.getParameter("pprice")) на двойное значение. Вот так: decimalformat.format(Double.parseDouble(mf.getParameter("pprice")));
  2. На самом деле нет смысла делать это вообще, когда вы впоследствии конвертируете его обратно в Double. Вы могли бы также просто сделать product.setPrice(Double.parseDouble(mf.getParameter("pprice")));. Форматирование все равно потеряется.
person Espen S.    schedule 20.11.2018