真(8)分辨率,数据溢出

时间:2015-01-20 03:53:00

标签: fortran gfortran

我有以下不使用gfortran编译的代码:

program test_overflow
    real(8) a,b
    b=0.d0
    a=1e39
    write(*,*) a*b
end program

gfortran输出的错误是

test.f90:4.14:

        a=1e39
              1
Error: Real constant overflows its kind at (1)

我想知道这里有什么问题。据我所知,real(8)应该给出10到-100到+100(大约)的双倍精度范围,我错了吗?

1 个答案:

答案 0 :(得分:3)

使用a=1d39代替a=1e39

e表示单精度。

d表示双精度。

您可能需要参考Double Precision Constants的文档。