什么是数据INF/1.D+;300/用Fortran计算平均值?

什么是数据INF/1.D+;300/用Fortran计算平均值?,fortran,Fortran,我正在将一些Fortran语言翻译到我们的C#应用程序中,我试图弄清楚在函数顶部使用一点Fortran语言意味着什么 DOUBLE PRECISION INF, DMIN, D12 DATA INF/1.D+300/ INF的值是多少?代码正在声明一个名为INF(即无穷大)的常量,其值为10^300。您可能希望替换double.PositiveInfinity或double.MaxValue,或通常称为1.e+300中的e,但它用于双精度 仅定义了3个变量,类型为double 转化

我正在将一些Fortran语言翻译到我们的C#应用程序中,我试图弄清楚在函数顶部使用一点Fortran语言意味着什么

  DOUBLE PRECISION INF, DMIN, D12

  DATA INF/1.D+300/

INF的值是多少?

代码正在声明一个名为
INF
(即无穷大)的常量,其值为10^300。您可能希望替换
double.PositiveInfinity
double.MaxValue

,或通常称为
1.e+300
中的
e
,但它用于双精度

仅定义了3个变量,类型为
double

转化为

X = Y;
在C#中。因此你得到了

double INF = 1.e+300, DMIN, D12;

由于
INF
太大了,我相信它的意思是“无穷大”,在这种情况下,最好使用(
double-INF=double.PositiveInfinity,
)。

该值将是1.0e300,但我确信其目的是将其设置为当前CPU上可以表示的最大双倍值。因此,在C语言中,这将是
double.PositiveInfinity
,而不是一些硬编码的值。

代码的样式是FORTRAN IV或FORTRAN 77,而不是FORTRAN 90/95/2003

Double Precision声明变量的精度是常规实数的两倍。我不确定那个时代的FORTRAN标准对这意味着什么非常精确,因为当时有更多种类的数字硬件。今天,它几乎总是获得一个8字节的实数。Data语句初始化变量INF。在常量“1.D+300”中使用“D”而不是E是旧的FORTRAN语言,用于指定常量为双精度

Fortran(>=90)获取最大正双精度的方法是:

INF=巨大(1.0D+0)

double INF = 1.e+300, DMIN, D12;