2013-12-14 3 views
-1

나는 DVD를 데이터베이스에 저장하기 위해 jsp를 사용하고 있습니다.Float to Float : NumberFormatException

대가로 저는 float를 사용하기로했습니다. 양식에서 나는 다음 방법 사용 :

<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을 이 곳 곳곳에서이 문제를 찾았지만 해결책을 찾지 못했습니다 .. 나는이 기술을 사용하여 수백만 번을 변환했으며 왜 왜 그런지 모르겠습니다. 지금 당장은 ...

도움이 필요하십니까?

+0

실제 코드를 표시 할 수 있습니까? –

답변

4

예외가 발생하는 경우 Float.parseFloat으로 전화하지 않은 경우이 아닙니다. 전화가 Integer.parseInt입니다. 스택 추적에서 행 번호를 확인하여 어디에 있는지 확인하십시오. 나는 당신이 다른 곳에서 정수를 파싱하고있는 것으로 의심하고, 당신은 파싱에 잘못된 값을 끌어오고있다.

또한 통화 값을 저장하려면 float 또는 double 대신 BigDecimal을 사용하는 것이 좋습니다. (이진 부동 소수점 유형은 정확한 십진수 표현이있는 수량과 잘 일치하지 않습니다.)

+0

네, 그게 문제입니다. 스택 트레이스에서 그는'9.99'를 정수로 파싱하려고합니다. –

+0

사실 저는 부동 소수점으로 Integer.valueOf (someString)을 사용했습니다. 주의를 기울이지 않았고 부동 소수점을 구문 분석한다는 것을 알고있는 코드 행에만 집중했습니다. 부족 관심의 .. 감사합니다 Jon :) –