Fortran
의 입력 파일에서 부동 소수점 값을 읽으려고합니다. toto.txt 내 실제 값을 포함하는 텍스트 파일입력 파일에서 실제 값을 읽을 때 부동 소수점 예외
...
INTEGER :: nf
REAL :: re
OPEN(newunit=nf, file='toto.txt')
READ(unit=nf, fmt=*) re
...
:
10.1001 ! this value is supposed to be read by the Fortran program
내가 컴파일하고 다음과 같이 실행하면이 모든 것이 잘 작동을
은이 코드를 사용하여 이렇게하려면.그러나 컴파일 할 때 약간의 문제가 발생하며 fpe
옵션으로 실행하십시오. gfortran -g1 -c -fbacktrace -ffpe-trap=invalid,zero,overflow,underflow,inexact,denormal -Wall -fcheck=all my_prog.f90
내가 내 읽기 동작이 적절하지 가정 : 나는 gfortran
명령을 사용
Program received signal SIGFPE: Floating-point exception - erroneous arithmetic operation
Backtrace for this error
#0 0xfffffff
#1 0xfffffff
...
: 나는처럼 보이는 재 부가 라인에 오류가 있습니다. 오류가 정상입니까? 실제 가치를 읽을 수있는 적절한 방법이 있습니까?
전체 코드와 입력 파일이 필요합니다. [mcve]를 참조하십시오. 그 행동은 정상적인 것이 아니며 그 문제는 다른 곳에있을 것입니다. –
어,'부정확, denormal'을 사용하지 마십시오. 당신이하는 일을 잘 알지 않는 한 실제로 사용하고 싶지 않습니다! –
gfortran 문서에서 : "부동 소수점 연산의 대부분은 반올림으로 인해 정밀도가 떨어지므로 ffpe-trap = inexact가 실제로는 흥미롭지 않을 수 있습니다." – agentp