任意の浮動小数点文字列をfortranの実数に変換する簡単な方法はありますか? strtod
のようなものを考えますか? READ
ステートメントの問題は、すべての浮動小数点フォーマットの編集記述子に明示的な幅が必要であることです。これまで私が作った最高の回避策のようなものです:Fortran 95で任意の浮動小数点文字列を実数に変換
pure function strtod(s)
real(kind=8) :: strtod
character(len=*), intent(in) :: s
character(len=32) :: fmt
integer :: dot
dot = index(s, ".")
if(dot < 1) then
write(fmt, '("(F",I0,".0)")'), len_trim(s)
else
write(fmt, '("(F",I0,".",I0,")")'), len_trim(s), len_trim(s)-dot
end if
read(s,fmt), strtod
end function strtod
しかし、私は何かが欠けていることだし、可能性がある場合、私は思ったんだけどそれを行うには良い方法はありますか?
なぜ文字列を実際の変数に読み込むことができないのですか? 'read(s、*)x'' s'はあなたのキャラクターで、 'x'は浮動小数点値です。 – Peaceful