实变量的精度

时间:2013-06-07 20:06:20

标签: fortran precision

我在FORTRAN 77中有以下代码:

REAL*8 :: dm

dm=1.-1.E-12

write(6,*) 'dm: ', dm

我得到:dm: 1

这样好吗?我想得到dm=0.999999999999

1 个答案:

答案 0 :(得分:3)

如评论中所述,您需要指定常量的精度。此外,real*8已过时。 (它总是一个扩展吗?)这是一种现代的编写方法,使用ISO Fortran环境获取64位实数类型,并在声明和常量中使用该类型。

use ISO_FORTRAN_ENV

real (real64) :: dm  
dm = 1.0_real64 - 1.0E-12_real64

有关详细信息,请参阅What does `real*8` mean?