日々成長していくためのブログ

雑記ブログ。日々新しい発見をして、考えをまとめていきたい。

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のような例外的な文字列を別個に扱う。