我在 FORTRAN 77 中有以下代码:
REAL*8 :: dm
dm=1.-1.E-12
write(6,*) 'dm: ', dm
我得到:dm: 1
这个可以吗?我想得到dm=0.999999999999
如评论中所述,您需要指定常量的精度。而且,real*8
已经过时了。(它总是扩展吗?)这是一种现代的编写方式,使用 ISO Fortran 环境获取 64 位实数类型,并在声明和常量中使用该类型。
use ISO_FORTRAN_ENV
real (real64) :: dm
dm = 1.0_real64 - 1.0E-12_real64
有关详细信息,请参阅`real*8` 是什么意思?