fortran-从输入文件读取实数值时的浮点异常

我尝试从Fortran中的输入文件读取浮点值.

为此,我使用以下代码:

...
INTEGER            :: nf
REAL               :: re

OPEN(newunit=nf, file='toto.txt')

READ(unit=nf, fmt=*) re
...

与toto.txt一个包含我的真实值的文本文件:

10.1001 ! this value is supposed to be read by the Fortran program 

如果我像这样进行编译和执行,一切都会很好.

但是当我使用fpe选项编译和执行时遇到了一些麻烦.
我在读数行出现错误,如下所示:

Program received signal SIGFPE: Floating-point exception - erroneous arithmetic operation

Backtrace for this error
#0  0xfffffff
#1  0xfffffff
...

我使用gfortran命令:gfortran -g1 -c -fbacktrace -ffpe-trap =无效,零,溢出,下溢,不正确,不正常-Wall -fcheck = all my_prog.f90

我认为我的阅读动作不合适.
那该错误正常吗?是否有读取真实值的正确方法?

最佳答案
浮点异常不精确和异常的发生频率很高,并且在合法使用浮点算术期间是不精确的.几乎所有现实世界中的浮点算法.即使不是从文件或键盘读取单个数字,因为并非所有十进制数字都可以完全以二进制存储.异常现象的发生频率略有降低,但是使用仍然可以合法.

因此,捕获这些浮点异常是没有用的.甚至下溢也是值得商.的.我不会默认捕获它,但是我可以看到它的用处.

转载注明原文:fortran-从输入文件读取实数值时的浮点异常 - 代码日志