실수 비교

실수끼리의 비교에서 ‘==’은 지양해야합니다.

실수의 소수점 아래 숫자들은 컴퓨터가 무한하게 계산할 수 없기 때문에 실수 계산에서는 항상 오차가 발생할 가능성이 존재합니다.

따라서 실수끼리 같은지 다른지 비교를 할 때 ‘ == ‘ 연산은 지양해야합니다.

즉, if(a == b) 와 같은 경우 a와 b가 완벽하게 일치해야 참이기 때문에 계산 과정에서 아주 조금의 오차가 발생하더라도 거짓이 되어버립니다.

이런 상황을 피하기 위해서 다음과 같은 방법을 사용합니다.

if(fabs(a-b) < 1e-9)

a와 b의 차이가 10^-9 이하라면 a와 b가 같다고 정의하는 것입니다. (C++의 경우 데이터 타입 상관없이 abs함수를 쓰시면 됩니다.)

더 정확한 결과를 원한다면 10^-9보다 더 작은 값을 기준 오차로 정하시면 됩니다.

fabs 함수의 경우 실수의 절댓값을 리턴하며, “math.h” 헤더파일에 정의되어있습니다.


© 2018. All rights reserved.

Powered by Hydejack v8.5.2