부동소수점 비교 연산 – 그 치명적 오류

JSF AV C++ Coding Standard와 MISRA-C Coding Standard 에서는 반복문 카운터로 부동 소수점 사용을 금하고 있습니다. 반복문 카운터로 부동 소수점형 변수를 사용하면 필연적으로 부동소수점 비교 연산을 수행하게 되는데 컴퓨터는 그 태생적 한계로 정확한 부동 소수점 값을 저장 및 비교하는 것이 불가능합니다. 따라서 부동소수점을 연산에 사용하면 반올림 혹은 버림 문제가 필연적으로 발생하기 때문에 정확한 연산이 필요한…

Java 부동소수점 비교 하기

저를 포함한 많은 초보 개발자들이 흔히 하는 실수가 부동소수점을 비교할 때 아래와 같이 if문을 사용해서 단순히 두 값을 비교한다는 것입니다. 위 코드의 경우, 사람이 판단하기에 같은 값이라고 생각 할 지라도 실제로 콘솔에는 “X and Y is not same”이라는 메시지를 접할 가능성이 높습니다. 컴퓨터는 태생적으로 정확하게 부동소수점을 표현하지 못하기 때문입니다. 이 때문에?JSF AV C++나 MISRA-C 같은…