【发布时间】:2012-11-21 14:27:39
【问题描述】:
在 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
但我想知道我是否遗漏了什么,可能有更好的方法吗?
【问题讨论】:
-
为什么不能简单地将字符串读入一个实变量?
read(s, *)x其中s是你的角色,而x是它的浮点值。
标签: fortran fortran90 fortran95