回 帖 发 新 帖 刷新版面

主题:在intel fortran中如何真正实现(kind=16)精度?

做一项目,里面用到超大数值,达到1e400量级,我们知道浮点数数值范围限定如下:

REAL(KIND=8):  ±2.23*10-308 ~ ±1.79*10308

REAL(KIND=16): ±3.36*10-4932~ ±1.19*104932

现在64位win7系统,intel fortran11.0编译器下,变量可定义为REAL(KIND=16)

但是变量大小还是不能超过1e308量级

请教各位高人,如何解决程序中超大数值的溢出问题。是不是需在linux系统下才能真正实现kind=16精度,让最大数值达到104932量级 

回复列表 (共3个回复)

沙发

Program Main
  Implicit None
  Real(16) :: a
  Write(*,*) huge(a)
  a = 1.0E4000_16
  Write(*,*) a
End   

结果为:
  1.189731495357231765085759326628007E+4932
  1.000000000000000000000000000000000E+4000
请按任意键继续. . .

板凳

多谢 石头雪球:) 问题已解决

3 楼


我也遇到类似的问题,请问你是怎样解决的呢?
我的程序中设置了一个很大的数组,结果出现以下错误,Error: Overflow occurred while evaluating constant expression.
Error executing df.exe.
我想应该也和编译器有关,我的编译器是32位的,能把你的64位的intel fortran传我一份吗?谢谢啦。。我的邮箱124945260@qq.com

我来回复

您尚未登录,请登录后再回复。点此登录或注册