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이 프린트돼야 할것 같 은디.. 흐미.. ㅠ,.ㅠ
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
신기하네요... 흐흐흐...냉텅
ㅇ
Re: float 값의 비교
원래 실수는 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이 프린트돼야 할것 같
은디.. 흐미.. ㅠ,.ㅠ
댓글 달기