CnUnix

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ CnUnix ] in KIDS
글 쓴 이(By): Alpheus (전 형 조)
날 짜 (Date): 1994년12월10일(토) 21시22분19초 KST
제 목(Title): [Q] 펜티엄말고 SunOS도 C가 이상??



요즘 펜티엄이 말이 많은데, SunOS에서도 비슷한 일이 있읍니다.

여러 컴퓨터에서 다 실험해봤지만 아래와 같은 결과가

나옵니다. (0.01을 20번 더해도 0.2가 나오지 않읍니다.)

컴퓨터의 데이타 구조상 어쩔수 없는 한계인가요?

아니면 정확한 값을 이용하기 위해서는 다른 방법을 써야하는지요?

(데이타를 저장하는 byte수를 프로그램을 작성해서 더 사용하는
방법말구요.., 프로그램을 작성해서 적당한 자리수에서 반올림하는
방법도 말구요..)

C에서 옵션같은 것으로 간단하게 해결할 수 있는 방법이 없을까요?

------------ 아래는 실험 방법 & 결과 ------------------

% vi test.c

#include <stdio.h>
#define step 0.01

main()
{
        int i;
        double sum;

        for(i=0;i<20;i++)
                sum += step;
        printf("step = %.20f \n", step);
        printf(" sum = %.20f \n", sum);
        if(sum == 0.2) puts("0.2 correct!");
        else puts("0.2 uncorrect!!!");
}

% make test
cc      -target sun4 -o test test.c

% test
step = 0.01000000000000000021
 sum = 0.20000000000000003886
0.2 uncorrect!!!

[알림판목록 I] [알림판목록 II] [글 목록][이 전][다 음]
키 즈 는 열 린 사 람 들 의 모 임 입 니 다.