자바에서 float를 비교할 때 == 연산자를 사용하는 것이 잘못된 것인가요?


여기 java.sun 페이지에 의하면 ==는 자바에서 floating point number를 위한 동등 비교 연산자라고 나와있는데요.

그러나, 이런 코드를 에디터에 작성하고 :

if(sectionID == currentSectionID)

Static analysis를 실행시켰을 때, "JAVA0078 Floating point values compared with ==" 이런 메시지가 뜨네요.

Floating point 값을 비교하는데 ==연산자를 사용하는 것이 뭐가 잘못된 것이죠? 올바른 방법은 무엇인가요?

  • 2016년 07월 08일에 작성됨

조회수 70


1 답변


좋아요
0
싫어요
채택취소하기

Float의 ‘동등’한지 테스트하는 정확한 방법은 이것입니다 :

if(Math.abs(sectionID - currentSectionID) < epsilon)

epsilon 은 0.00000001만큼이나 매우 작은 숫자입니다. 원하는 정확도에 따라 더 작아지거나 커질 수도 있습니다.

  • 2016년 07월 09일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close