float 값의 비교

익명 사용자의 이미지

float a;

a = 0.2;
if(a == 0.2) printf("1\n");
else if(a == (float)0.2) printf("2\n");

이걸 실행하면 왜 2가 찍히는걸까염.. -_-+ 그냥 1이 프린트돼야 할것 같
은디.. 흐미.. ㅠ,.ㅠ

익명 사용자의 이미지

익명 사용자의 이미지

원래 실수는 0.2 == 0.2 가 아닐수 있습니다.
그리고 if (a == 0.2) 문에서 0.2가 캐스트 되지 않았다면
컴파일러에서 더 큰 double형으로 자동 캐스팅 될 것입니다.
float a 말고 double a 로 하면 될 듯도 하구요
실수는 == 비교는 정확하지 않을 수 있습니다. < > 로 비교하시길...

그럼...

허접 wrote..
float a;

a = 0.2;
if(a == 0.2) printf("1\n");
else if(a == (float)0.2) printf("2\n");


이걸 실행하면 왜 2가 찍히는걸까염.. -_-+ 그냥 1이 프린트돼야 할것 같
은디.. 흐미.. ㅠ,.ㅠ