CnUnix

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ 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
[알림판목록 I] [알림판목록 II] [글 목록][이 전][다 음]
키 즈 는 열 린 사 람 들 의 모 임 입 니 다.