回 帖 发 新 帖 刷新版面

主题:1._EB什么意思?

新手上道,敬请各位高手指点一下,下面这段程序中,SELECTED_REAL_KIND(12)种别函数起什么作用啊,它赋给EB具体值多少啊?后面的1._EB又是什么意思啊?是等于1.0吗?谢谢
INTEGER, PARAMETER :: EB = SELECTED_REAL_KIND(12)
REAL(EB) :: PI,SQRTPI,RPI,TWOPI,PIO2,RFPI
REAL(EB), PARAMETER :: ONTH=1._EB/3._EB,THFO=3._EB/4._EB,FOTH=4._EB/3._EB,TWTH=2._EB/3._EB,ONSI=1._EB/6._EB

CONTAINS

SUBROUTINE SET_OFTEN_USED

PI=4._EB*ATAN(1.0_EB)
SQRTPI=SQRT(PI)
RPI=1._EB/PI
TWOPI=2._EB*PI
PIO2=PI/2._EB
RFPI=1._EB/(4._EB*PI)

回复列表 (共3个回复)

沙发

SELECTED_REAL_KIND(12) 是Fortran的内部函数, 返回一个合适精度值. 这个用来做精度控制可以不依赖系统和编译器.

SELECTED_REAL_KIND(P,R) 
· Integer transformational function. 
· Returns the kind number for the smallest real kind that has a decimal precision 
of at least P digits and an exponent range of at least R powers of 10. If more than 
one kind satisfies this constraint, then the kind returned will be the one with the 
smallest decimal precision. 
· If no real kind satisfies the requirement, a -1 is returned if the requested preci- 
sion was not available, a -2 is returned if the requested range was not avail- 
able, and a - 3 is returned if neither was available. 
· P and R must be integers. 

1._EB 就是这个1是EB精度的1.

这段代码习惯我挺喜欢, ^-^

板凳

SELECTED_REAL_KIND(12):意思是如果要求数据有12位有效数字,那么定义数据类型的时候,应该是多少字节。
这里是12位有效数字,real(kind=8)才能满足要求,因此EB=8。
1._EB是等于1.0,后面加个_EB表示这个1.0是real(kind=8)类型的。

3 楼

kind=8 严格来说也是依赖系统和编译器的(我也是看书才知道的). 据说有些系统下kind=2就是双精度.

我来回复

您尚未登录,请登录后再回复。点此登录或注册