1

나는 시뮬레이트 된 어닐링 프로그램을 구현 중이고이 중 일부는 자바 프로그램이 읽는 .txt 파일에서 점수를 계산하는 것과 관련이있다.이 예외는 무엇을 의미합니까?

1) 사용자로부터 입력 문자열을 읽습니다. 입력 문자열이 길수록 다음과 같은 예외가 발생할 가능성이 높습니다.

2) 계산 된 점수에 본질적으로 10 진수가 많이 추가되어 'double'변수에 저장됩니다.

누군가 이러한 예외가 발생하는 이유를 알려주십시오. 힐 스왑에서

점수 : 스레드에서 스왑 ... 예외 "주" java.lang.NumberFormatException의 후 0.24874990000000005 : 입력 문자열 : "7.92066E-" sun.misc.FloatingDecimal.readJavaFormatString에서 (FloatingDecimal.java:1224)

대단히 감사합니다.

+0

더블 즈는 반올림 오류가 있습니다 ('0.01 + 0.09'시도 : '0.1'이 아닙니다). 따라서 복식은 과학 또는 재무 계산에 적합하지 않습니다. [Drools Planner] (http://www.jboss.org/drools/drools-planner)의 시뮬레이션 어닐링은 'BigDecimal'(반올림 오류가 없지만 속도가 느림)과 같은 다른 Score 구현을 사용하여 지원합니다. –

답변

7

프로그램이 Double로 구문 분석 할 수없는 "7.92066E-"문자열을 구문 분석하려고한다는 뜻입니다.

이 문자열이 어디서오고 있는지 (스택 추적의 나머지 부분이 알려줘야 함) 확인하고 라인을 따라 잘못된 데이터를 가져 오지 않았는지 확인해야합니다.

+2

E. 뒤에 숫자가 누락되어 유효하지 않습니다. 7.92066E042- –

+0

과 같은 것이어야합니다. 답이 맞습니다. 7.92066E-5 유형의 데이터 파일에 숫자가 있습니다. 이 문제는 내가 조기에 읽기를 중지 할 때 발생합니다. 문제가 수정 될 것입니다. 감사! – Roy

관련 문제