FORTRAN,为什么我在读取非常大的数字时有 inf?

FORTRAN, why do I have inf when reading extremely big numbers?

open(10,file='datad.dat',status='old')

do i=1,1484
read(10,99)d(i,:)
99 format(10(e16.12))
end do

这是我要阅读的代码 datad.dat.File 很大,post 只是第一行:

   2.1762368e+13             0.0             0.0             0.0   1.0123726e-01  1.7723948e+149   1.0671934e+06  1.5929603e+104   4.3220965e+48   7.2446595e+16

但是当我执行代码时,我得到:

  2.17623686E+13   0.00000000       0.00000000       0.00000000      0.101237260             Infinity   1067193.38             Infinity         Infinity   7.24465978E+16

我用 gfortran.Why 编译了 FORTRAN 代码我有无穷大吗,对指数有限制吗?我如何检查这个?

这实际上取决于您声明 d 的方式以及您使用的编译器。

在 GFortran 上,实数的限制是 HUGE(0.0E0),双精度的限制是 HUGE(0D0)。这大致达到 1E38 的真实和 1D308 的 DP。

据推测,您已将 d 声明为实数,因此超过 1E38 的任何值都将是无穷大。