[ 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!!! |