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 的任何值都将是无穷大。
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 的任何值都将是无穷大。