在 Fortran 中读取浮点数期间的错误值
Bad value during floating point read in Fortran
我正在尝试从 .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)"
我已尝试对代码进行不同的修改,但没有得到任何结果。任何帮助将不胜感激!
格式(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)
我正在尝试从 .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)"
我已尝试对代码进行不同的修改,但没有得到任何结果。任何帮助将不胜感激!
格式(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)