繁体   English   中英

从输入文件读取实际值时出现浮点异常

[英]Floating point exception when reading real values from an input file

我尝试从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=invalid,zero,overflow,underflow,inexact,denormal -Wall -fcheck=all my_prog.f90

我认为我的阅读操作不正确。 那么这个错误正常吗? 有没有正确的方法来读取真实值?

浮点异常不精确非规范发生的方式过于频繁,并且在合法使用浮点运算期间是不精确的。 几乎所有真实世界的浮点运算。 甚至从文件或键盘读取单个数字,因为并非所有十进制数字都可以完全以二进制形式存储。 异常发生的频率略低,但使用仍然是合法的。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM