fortran で任意の浮動小数点文字列を実数に変換する簡単な方法はありますか? 次のようなことを考えてくださいstrtod
。ステートメントの問題READ
は、すべての浮動小数点形式の編集記述子が明示的な幅を必要とすることです。これまでのところ、私が行った最善の回避策は次のようなものです。
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
しかし、何かが足りないのではないかと思っています。それを行うためのより良い方法はありますか?