Fortran中浮点读取期间的值不正确

时间:2016-10-24 01:58:44

标签: gcc fortran gfortran fortran77

我正在尝试从.wve文件中读取数据。但是有一些我无法找到的错误。

这是错误讯息: “在文件arbitime_T16_parts.for的第84行(单位= 30,文件='oji.wve') Fortran运行时错误:浮点读取时的错误值“

并且óji.wve'看起来像这样:

29981    .0100 1.0
-5.63983   -5.64221   -5.64460   -5.63959   -5.64150   -5.65437   -5.65652   -5.64579
-5.64102   -5.64150   -5.63983   -5.62433   -5.62695   -5.62934   -5.63649   -5.63363
-5.63625   -5.63673   -5.62958   -5.64341   -5.64984   -5.63601   -5.63601   -5.64436
-5.63721   -5.64436   -5.64245   -5.64412   -5.64650   -5.66176   -5.65294   -5.64054
-5.63888   -5.63578   -5.63721   -5.63959   -5.64531   -5.64460   -5.63911   -5.64007
-5.63840   -5.63816   -5.64174   -5.63411   -5.63053   -5.63578   -5.64269   -5.64293
-5.64770   -5.64698   -5.64078   -5.62362   -5.62982   -5.63578   -5.63649   -5.64388
-5.64221   -5.64150   -5.64460   -5.65008   -5.64698   -5.64555   -5.63864   -5.63458
-5.63673   -5.63888   -5.63482   -5.63649   -5.64221   -5.63792   -5.62672   -5.63172
-5.64531   -5.65080   -5.64388   -5.64174   -5.64007   -5.65032   -5.65533   -5.65747
-5.64817   -5.63244   -5.62910   -5.63554   -5.64364   -5.64603   -5.63530   -5.63530
.....................................................................

节目:

 C     READ EARTHQUAKE DATA
 C
       READ(30,*) NEND,DT,GAL
       WRITE(6,*) NEND,DT,GAL
       READ(30,2222) (Z(JJ),JJ=1,NEND)
  2222 FORMAT(8F10.5)
       CLOSE(30)

第84行是“READ(30,2222)(Z(JJ),JJ = 1,NEND)”

我尝试过不同的代码修改,但没有得到任何结果。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

格式(F10.5)表示每个输入10个字符。但是你的文件每个数字有11个字符。因此,对于第5个数字,它会尝试获取它无法解释的9 -5.641

-5.63983   -5.64221   -5.64460   -5.63959   -5.64150   -5.65437   -5.65652   -5.64579
|--- 1---||--- 2---||--- 3---||--- 4---||--- 5---||--- 6---||--- 7---||--- 8---|

最简单的解决方案是改变

 2222 FORMAT(8F10.5)

进入以下两个选项之一:

 2222 FORMAT(8F11.5)
 2222 FORMAT(8(F10.5,X))

或者您可以完全取消FORMAT语句,只需输入

即可
READ(30, *) (Z(JJ),JJ=1,NEND)