| [ CnUnix ] in KIDS 글 쓴 이(By): chilly (김규동) 날 짜 (Date): 1996년02월24일(토) 14시03분01초 KST 제 목(Title): 메아리: C에서 float ?? type문제라기 보다 programming style에 관한 문제인데요. 어느 교과서에나 integer가 아닌 변수를 사용하면서 ==로 비교하지 말라는 말이 꼭 나옵니다. 그것은 언제나 따르면 손해날 것이 없는 격언인 것같습니다. 최초의 이진수 언급이 정확한 예인데요, 어느 guest분이 다른 질문에 대한 답으로 적확하게 지적하셨죠. 많은 똑떨어지는 십진수 소수가 이진수에서는 그렇지 않습니다. 또 언제나 컴퓨터는 finite arithmetic을 한다는 사실을 염두에 둔다면 if ( i==0.1 ) 과 같은 style의 programming은 좋지 않습니다. 꼭 필요하다면, #define EPSILON 1e-20 if ( fabs(i-0.1) < EPSILON ) 등이 적당하다고 하겠습니다. EPSILON은 system의 특성과, 응용에 따라 적절히 조절해야 하겠지요. -- Gyudong Kim % Dept. of Electronics, Seoul Nat'l Univ., Seoul 151-742, Korea chilly % Phone +82 2 880 7280; Fax +82 2 885 6993; Pager +82 12 845 3420 Fabiano % http://www.iclab.snu.ac.kr/~chilly, chilly@iclab.snu.ac.kr |