我尝试从输入文件中读取浮点值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
...
I use a gfortran
命令 :gfortran -g1 -c -fbacktrace -ffpe-trap=invalid,zero,overflow,underflow,inexact,denormal -Wall -fcheck=all my_prog.f90
我认为我的读取操作不正确。
那么这个错误正常吗?有没有正确的方法来读取真实值?
浮点异常inexact and denormal这种情况经常发生,并且在合法使用浮点运算期间是不精确的。几乎所有现实世界的浮点运算。即使从文件或键盘读取单个数字,因为并非所有十进制数字都可以精确地以二进制形式存储。非规范发生的频率稍低,但使用仍然是合法的。
因此,捕获这些浮点异常是没有用的。甚至下溢也是有争议的。默认情况下我不会捕获它,但我可以看到它的用处。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)