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

时间:2015-04-18 08:51:03

标签: fortran

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的代码很大,只会发布第一行:

   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编译了FORTRAN代码。为什么我有无限,是否有关于指数的限制?我该如何检查?

1 个答案:

答案 0 :(得分:4)

这实际上取决于你如何声明d以及你正在使用哪个编译器。

在GFortran上,对于实数,限制为HUGE(0.0E0),对于双精度,限制为HUGE(0D0)。对于真实而言,这大致达到1E38,对于DP则达到1D308。

猜测,你已经宣布d为真实,所以超过1E38的任何东西都是无限的。