2013-12-14 1 views
-1

Я использую JSP для хранения DVDs в базу данныхСтрока Float: NumberFormatException

Для цены, которую я выбрал использовать поплавок. В форме я использую следующий подход:

<form method="POST"> 
... 
    <td> 
     <input type="text" name="dvdprice"/> 
    </td> 
... 
<input type="submit" name="submit" value="Submit"> 
</form> 

При попытке преобразовать его из строки плавать я использую это

String price = request.getParameter("dvdprice"); 
... 
Float.valueOf(price) 

И я получаю это исключение:

SEVERE: java.lang.NumberFormatException: For input string: "9.99" 
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) 
at java.lang.Integer.parseInt(Integer.java:492) 
at java.lang.Integer.valueOf(Integer.java:582) 
... 

I я искал эту проблему повсюду, но я не мог найти решение. Я использовал эту технику для преобразования чисел миллионы раз, и я не уверен, почему isn ' t работает прямо сейчас ...

Любая помощь?

+0

Можете ли вы, пожалуйста, показать свой фактический код? –

ответ

4

Исключением, которое вы получаете , является не от звонка до Float.parseFloat. Это от звонка до Integer.parseInt. Проверьте номер строки в трассировке стека, чтобы узнать, где. Я подозреваю, что вы разбираете целые числа в другом месте, и вы просто тянете неправильное значение для синтаксического анализа.

Кроме того, настоятельно рекомендуется использовать BigDecimal вместо float или double для хранения значений валюты. (Двоичные типы с плавающей запятой не играют превосходно с величинами, которые имеют точное десятичное представление.)

+0

Да, это проблема. Из трассировки стека он пытается проанализировать '9.99' как целое. –

+0

Действительно у меня было в другом месте Integer.valueOf (someString), который был float .. Я не обратил внимания, и я только сосредоточился на этой строке кода, где я знал, что разбирал поплавок. Lack внимания. Спасибо Jon :) –