Fortranコードの指数表記での数値の出力について
Fortranのwriteで、指数表記の数値を出力した時に迷ったこと。
例えば
implicit none real*8 :: a=1.0e-10 a=a**10 write(6,'(1p,e13.4)') a end
というコードを書くと、出力が
1.0000-100
のようになり、指数を表すEが消えてしまう。
多量の数値データをFortranコードからファイル出力して、そのデータをpythonのnumpy.loadtxt()で読み込もうとしたのだが、以下のようなエラーが出てしまった。
ValueError: invalid literal for float():
対処法としては、
・数値データを出力する時に、極端な値を回避する。
・numpy.loadtxt(fname,dtype=np.str)のように、dtypeを文字列にする。問題のない数値は通常通りfloat()で数値に置換する。1.0000-100のような例外的な文字列を別個に扱う。