Fortran 实变量精度
我用FORTRAN 77编写了以下代码:Fortran 实变量精度,fortran,precision,Fortran,Precision,我用FORTRAN 77编写了以下代码: REAL*8 :: dm dm=1.-1.E-12 write(6,*) 'dm: ', dm 我得到:dm:1 这样行吗?我想获得dm=0.9999999999如注释中所述,您需要指定常数的精度。而且,real*8已经过时。(它总是一个扩展吗?)这里有一种现代的编写方法,使用ISO Fortran环境获得64位实类型,并在声明和常量中使用该类型 use ISO_FORTRAN_ENV real (real64) :: dm dm = 1.0
REAL*8 :: dm
dm=1.-1.E-12
write(6,*) 'dm: ', dm
我得到:dm:1
这样行吗?我想获得
dm=0.9999999999
如注释中所述,您需要指定常数的精度。而且,real*8
已经过时。(它总是一个扩展吗?)这里有一种现代的编写方法,使用ISO Fortran环境获得64位实类型,并在声明和常量中使用该类型
use ISO_FORTRAN_ENV
real (real64) :: dm
dm = 1.0_real64 - 1.0E-12_real64
有关更多信息,请参见注释中所述的,您需要指定常数的精度。而且,
real*8
已经过时。(它总是一个扩展吗?)这里有一种现代的编写方法,使用ISO Fortran环境获得64位实类型,并在声明和常量中使用该类型
use ISO_FORTRAN_ENV
real (real64) :: dm
dm = 1.0_real64 - 1.0E-12_real64
有关更多信息,请参见我对FORTRAN了解不够,无法权威地回答,但假设REAL*8表示8字节浮点(双精度),则它至少应具有15位精度。这可能与输出格式有关吗?问题是您的常量是单精度的,请尝试1.D0-1.D-12。注意,符号(连同REAL*8)在现代fortran中已经过时,但仍然有效。不清楚是否/为什么需要f77..我对FORTRAN了解不够,无法权威地回答,但假设REAL*8表示8字节浮点(双精度),它至少应该有15位精度。这可能与输出格式有关吗?问题是您的常量是单精度的,请尝试1.D0-1.D-12。注意,符号(连同REAL*8)在现代fortran中已经过时,但仍然有效。不清楚是否/为什么需要f77。。