簡體   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