Как предполагает @francescalus, я думаю, что ваш компилятор Фортрана, вероятно, будет читать литерал с плавающей точкой, такой как 1.2345e02
, как и ожидалось, в переменную двойной точности (как в коде ниже).Итак, я думаю, вы можете просто написать 1.2345e02
вместо 1.2345d02
в файл данных ...
program main
implicit none
real :: xs
double precision :: xd
open(10, file='test.dat', status='old')
read(10,*) xs
read(10,*) xd
close(10)
print "(a, e30.18)", "xs = ", xs
print "(a, e30.18)", "xd = ", xd
end
test.dat:
0.1234567890123456e12
0.1234567890123456e12
Result (тест gfortran.f90):
xs = 0.123456790528000000E+12
xd = 0.123456789012345596E+12 <-- double-precision accuracy