Answers:
执行此操作的另一种方法是,首先使用SELECTED_REAL_KIND内部函数在变量中显式指定所需的精度,然后使用它来定义和初始化变量。就像是:
INTEGER, PARAMETER :: dp = SELECTED_REAL_KIND(15)
REAL(dp) :: x
x = 1.0_dp
这样做的一个好处是可以将的定义存储dp
在模块中,然后USE
在需要的地方存储该模块。现在,如果您想更改程序的精度,只需dp
在该位置更改的定义,而不必D0
在变量初始化结束时搜索并替换所有s。(这也是为什么我建议不要按照建议的那样使用1.0D-1
语法来定义Y的原因。它可以工作,但将来使查找和更改所有实例变得更加困难。)
Fortran Wiki上的此页面提供了有关的一些很好的附加信息SELECTED_REAL_KIND
。
_dp
方案的主要原因是可以通过便携式方式清楚地定义精度。
您将变量声明为双精度,但使用单精度值对其进行了初始化。
您可能已经写过:
X=1.0d0
Y=1.0d-1
巴伦(Barron)在下面的回答是使字面量达到双精度的另一种方式,其优点是它允许您在以后更改变量的精度。