반응형
이번 글을 통해 배워갈 내용
- 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
C++ Primer
https://codemasterkimc.tistory.com/35
https://codemasterkimc.tistory.com/50
반응형
'C++ > C++ 기타' 카테고리의 다른 글
C++ 에서 문자열(String)을 숫자로 변환하는 법 (0) | 2021.10.22 |
---|---|
visual studio 2019에서 줄맞춤 단축키, 줄정렬 단축키 (0) | 2021.10.16 |
C++에서 new 없이 동적으로 2D 배열을 사용하는 방법에 대한 고찰 (0) | 2021.09.04 |
C++ 타입캐스팅에 대한 생각과 팁 (0) | 2021.08.20 |
C++에서 string을 int, uint혹은 long으로 변경하기 (1) | 2021.07.21 |