반응형
DB에서 받아온 데이터를 엑셀로 만들어 뿌려줄때 이 현상이 발생했다.
엑셀을 만들때 데이터를 String을 double로 파싱해서 셋팅하는데 그부분에서 해당 오류가 발생했다.
java.lang.NumberFormatException: For input string: "0-17"
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2043)
at sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:110)
at java.lang.Double.parseDouble(Double.java:538)
[원인]
double로 변환하려는 데이터의 소수점 길이가 너무 길어서 해당 오류가 발생했다. (소수점 17자리까지 0이 나왔다...)
내 경우에는 DB로 mssql과 oracle을 사용하는데 mssql에서 소수점있는 컬럼끼리 나누기를 하니까 소수점길이가 엄청 길어지는데
그렇게 받아온 String을 double로 변환하려고 하니까 발생하는 오류였다.
(똑같은 쿼리를 oracle로 조회를 했을때는 문제가없었다)
[해결]
불필요하게 소수점길이가 길어서 생긴 문제여서 데이터를 받아올때 소수점길이를 제한해주었다. (1.00000000000000000 이런식으로 데이터가 조회되고있었다)
반응형