프로그래밍 언어/C++
[C/C++] 부동소수점의 비교연산 안되는 이유 및 오차범위 해결하기
ShovelingLife
2024. 5. 3. 11:00
int i = 0;
double d = 0.f;
while (i++ < 100)
d += 0.01;
사실 C++에선 다 자르고 출력하기 때문에 파악하기가 쉽지 않다
아래와 같이 작성해주면 쉽게 파악 할 수가 있다 따라서
if (d == 1.0) 를 해주면 false가 나오는 이유다
int main()
{
int i = 0;
double d = 0.f;
while (i++ < 100)
d += 0.01;
printf("%.16f", d);
}
이녀석만큼 빼주면 된다
int main()
{
int i = 0;
double d = 0.f;
while (i++ < 100)
d += 0.01;
if (fabsf(d - 1.0) <= FLT_EPSILON)
cout << "same";
}