Fortran运行时错误:浮点读取值异常(ES14.6E2)求助
Fortran运行时错误:浮点读取失败(Bad value during floating point read)
错误信息
在文件src/annGeneralization.f90第79行(单元=12,文件='./output/ann1_1.out')
Fortran runtime error: Bad value during floating point read
相关代码(第77-79行)
write(*,*) './output/ann' // trim(str1) // '_' // trim(str0) // '.out' open(12, FILE = './output/ann' // trim(str1) // '_' // trim(str0) // '.out') read(12, '(ES14.6E2)') fitness
输入文件内容
ann1_1.out文件内仅一行内容:0.999999
问题原因
你用的格式说明符(ES14.6E2)要求读取带两位指数部分的科学计数法浮点数(比如9.999990E-01这类形式),但输入文件里是普通十进制小数,格式不匹配导致读取失败。
解决方案
方案1:修改读取格式(推荐)
改用兼容普通十进制小数的格式符,比如F14.6或ES14.6(去掉末尾的E2):
read(12, '(F14.6)') fitness
或者:
read(12, '(ES14.6)') fitness
方案2:修改输入文件格式
如果必须保留原读取格式,把输入文件内容改成科学计数法形式,比如:
9.999990E-01
额外调试建议
打开文件时可以加上状态检查和错误捕获,避免文件不存在等隐性问题:
integer :: iostat open(12, FILE = './output/ann' // trim(str1) // '_' // trim(str0) // '.out', STATUS='OLD', IOSTAT=iostat) if (iostat /= 0) then write(*,*) '文件打开失败,错误码:', iostat stop end if
内容的提问来源于stack exchange,提问作者Milena Dantas
相关产品推荐
相关产品推荐

