C++에서 Floating 값을 0과 비교하는 방법

이번 글을 통해 배워갈 내용
- C++에서 double/float 타입 (== 비교 혹은!= 비교)를 하는 법을 알아보겠습니다.
float 나 double 타입을 0에다 일치 비교 연산을 하실 때
아래와 같이 쓰고 계신다면
일치한다라고 출력은 되지만
const float kMyFloatNum = 0.0F;
if(kMyFloatNum == 0)
{
std::cout<< "일치한다";
}
저는
아래와 같이 연산할 것 같습니다
const float kMyFloatNum = 0.0F;
if (fabs(kMyFloatNum - 0) <= DBL_EPSILON * std::fmax(fabs(kMyFloatNum), fabs(0)))
{
std::cout << "일치한다";
}
이렇게 복잡하게 연산하는 이유는
컴퓨터 연산에서
정밀도 계산적인 측면에서
0과 0.000 이 다른 수 이기 때문입니다.
따라서
이 부분이 중요한데
floating point 숫자 일치 비교를 최대한 자제하는 게
정확도 측면에서는 제일 좋은 것 같습니다.
오늘도 즐거운 코딩 하시길 바랍니다 ~ :)
참조 및 인용
https://stackoverflow.com/questions/19837576/comparing-floating-point-number-to-zero
Comparing floating point number to zero
The C++ FAQ lite "[29.17] Why doesn't my floating-point comparison work?" recommends this equality test: #include /* for std::abs(double) */ inline bool isEqual(double x, ...
stackoverflow.com
C++ Primer
https://codemasterkimc.tistory.com/35
C++ 이론을 배울수 있는 곳 정리
개요 C++을 배우는 책, 강의, 블로그, 링크 등을 공유합니다. (링크 및 간략한 설명을 하였으나 만약 원작자가 링크를 거는것을 원치 않을 경우 연락주시기 바랍니다.) 서적 https://www.amazon.com/Prime
codemasterkimc.tistory.com
https://codemasterkimc.tistory.com/50
300년차 개발자의 좋은 코드 5계명 (Clean Code)
이번 글을 통해 배워갈 내용 좋은 코드(Clean Code)를 작성하기 위해 개발자로서 생각해볼 5가지 요소를 알아보겠습니다. 개요 좋은 코드란 무엇일까요? 저는 자원이 한정적인 컴퓨터 세상에서 좋
codemasterkimc.tistory.com