[완료] 포트란 질문
글쓴이: nhamfnad / 작성시간: 화, 2009/04/07 - 3:41오전
안녕하세요. 포트란 초봅니다.
간단한 1 나누기 3을 해보니...
program sample real(8) x x = 1/3.0 print *, x end program sample
결과가 0.33333334326744080 이 나옵니다. g95, gfortran, g77, f90, f95 에서 테스트해봐도
동일한 결과가 나옵니다. 반면에 c 로 짠 코드는
#include <stdio.h> int main() { printf("%.18f\n", 1/3.0); return 0; }
결과가 0.33333333333333315 가 찍히구요.
파이선의 결과도 0.33333333333333331 이렇습니다.
정말로 포트란의 결과값이 정확한걸까요? 아니면 제가 프로그램을 잘못짠걸까요
고수님들.. 답변주세요..
Forums:
1.0d0/3.0d0 으로
1.0d0/3.0d0 으로 해보시면 어떻게 나오나요?
온갖 참된 삶은 만남이다 --Martin Buber
감사합니다.
아하.. 그런 방법이 있군요. 다시 한번 컴파일 해보았습니다.
g95 (0.91 - gcc 4.0.3)
0.3333333333333333
gfortran (gcc 4.3.2)
0.33333333333333331
f90/f95 Sun Fortran 95 8.3
0.3333333333333333
gfortran 결과값만 틀리네요. 저걸 어떻게 해석해야 할찌...
gfortran의 경우는
gfortran의 경우는 상수에 대해서 gmp/mpfr 라이브러리를 사용해서 처리한다고 본기억이 있습니다.
온갖 참된 삶은 만남이다 --Martin Buber
신기하군요
포트란은
1.0/3.0 과
1.0d0/3.0d0
이 다를수가 있는것이군요.
C에서는 상수는 기본적으로 double로 처리하던데.
조심해야겠네요.을
댓글 달기