zae*_*aen 2 precision fortran language-lawyer
我通常使用这种形式在Fortran代码中获得双精度:
use, intrinsic :: ISO_FORTRAN_ENV
real(kind=real64) :: a = 5d0
Run Code Online (Sandbox Code Playgroud)
但是,当连续定义多个变量时,real(kind=real64)将变得非常重复。real*8尽管我避免这样做,但却很诱人,因为我被告知,尽管不太可能,但它有可能使程序不可移植。
从另一个关于该主题的问题中,我发现它是real(real64)有效的,但是我不知道这是否是一种好习惯;似乎与使用相同,real(8)因为至少在我的系统上,real64 =8。有没有比real(kind=real64)在变量声明中指定种类短的方法?甚至有real*8引起问题的现实机会吗?
和...之间的不同
use, intrinsic :: ISO_FORTRAN_ENV
Real( kind = real64 ) :: a
Run Code Online (Sandbox Code Playgroud)
和
use, intrinsic :: ISO_FORTRAN_ENV
Real( real64 ) :: a
Run Code Online (Sandbox Code Playgroud)
是纯粹的风格。两者都是同等可移植的,并且就代码而言是相同的。实际上,我在理解为什么您认为它们不同时遇到了问题。如果您认为real64输入太长,可以随时使用
use, intrinsic :: ISO_FORTRAN_ENV
Integer, Parameter :: wp = real64
Real( wp ) :: a
Run Code Online (Sandbox Code Playgroud)
从技术上讲不是可移植的是使用5d0作为常量,并假定它是与real64相同的实数。双精度已经过时了,算了吧,宁愿正确使用同类机制
use, intrinsic :: ISO_FORTRAN_ENV
Integer, Parameter :: wp = real64
Real( wp ) :: a = 5.0_wp
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
90 次 |
| 最近记录: |