Có cách nào dễ dàng để chuyển đổi chuỗi dấu chấm động tùy ý thành số thực trong fortran không? Hãy nghĩ về một cái gì đó như strtod
? Vấn đề với câu lệnh READ
là tất cả các định dạng điểm nổi chỉnh sửa mô tả yêu cầu độ rộng rõ ràng. Cho đến nay giải pháp khắc phục tốt nhất mà tôi đã thực hiện là:Biến đổi chuỗi dấu chấm động tùy ý thành hiện thực trong 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
Nhưng tôi tự hỏi nếu tôi thiếu điều gì đó và có thể có cách nào tốt hơn để làm điều đó?
Tại sao bạn không thể đọc chuỗi đó thành biến thực? 'read (s, *) x' trong đó' s' là ký tự của bạn trong khi 'x' là giá trị float của nó. – Peaceful