在使用fortran语言读入数据的时候,有时候必须要使用format来指定数据格式。笔者在使用format读入指数型数据的时候,总是出现变量转换错误的提示。
要读入的数据为:
308.00000 0.17559655E+11 0.17976980E+11 0.18430532E+11
format:
'(f12.5,3(e14.8))'
指数数据明明就是14位啊,可是按照这样的方式就是读不进去,找到了当时写数据时的format:
'(f12.5,3(2x,e16.8))'
是不是因为前面有空格?尝试着将format改为
'(f12.5,3(2x,e18.8))'
读入成功了。
fortran在读入数据的时候,当第一个数读完,后面的空格会连同第二个数一起读入,所以要考虑这方面的因素。
——————–2016年8月16日更—————-
指定format之后,反而没有了普适性,现在觉得更好的办法就是format直接为’*’,让fortran自己判断去,反而没那么多事。
real*8 :: A, B(3) !声明
integer :: i
read(100, *) A, (B(i),i=1,3) !format直接为*的时候,fortran会根据数据类型自己识别(括号里面的i是作为内循环变量的)