fortran - Fortran 中的实数同时使用科学记数法和下划线类型说明符

标签 fortran double fortran-iso-c-binding fortran2003

在 Fortran 中使用科学记数法表示浮点文字非常简单:

1.5d-10

意味着 double (无论在当前 Fortran 编译器设置下意味着什么)浮点值,近似于 1.5*10^-15

但是,指数表示法和浮点类型说明符的融合有点问题。当希望它具有 C_DOUBLE 类型时,如何声明该浮点文字?

我知道这是一个有点挑剔的问题,但在某些情况下 double 可能与 C_DOUBLE 不同。

最佳答案

真正的文字可以通过以下任何形式指定:

  • 1.2
  • 1.2e0
  • 1.2d0
  • 1.2_kind
  • 1.2e0_kind

最后一个是使用种类说明符和指数的示例。因此,具体到这个问题:1.5e-15_C_DOUBLE

当然可能存在 1.5d-151.5e-15_C_DOUBLE 不同的情况。 double 和 real(C_DOUBLE) 的类型分别由 Fortran 和配套的 C 编译器选择。

允许通过编译器标志将单精度和 double 文字常量提升为更高类型的编译器不会触及 real(C_DOUBLE)

<小时/>

对于没有小数部分的实数值,还有其他可用的形式:

  • 1.
  • 1e0
  • 1.e0
  • 1d0
  • 1.d0
  • 1.e0_kind
  • 1e0_kind

也就是说,小数部分是可选的,如果给出指数,则小数分隔符也是可选的。但请注意,1 是整数文字,而 1e0 及类似内容是实数。

关于fortran - Fortran 中的实数同时使用科学记数法和下划线类型说明符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49956241/

相关文章:

c - 如何从 C 头文件准备 Fortran 模块?

string - 在 Fortran 中分配字符数组

c - 将二维数组从 Fortran 传递到 C

f77 未格式化二进制文件的内容

fortran - 如何在 MS Visual Studio/Intel Fortran 项目中链接 .LIB?

c# - 定义一个没有固定大小的 double 组?

java - 从 double 转换为 long,完全转换我的号码

arrays - FORTRAN - 将数组值分配给变量

c++ - 支持三元 NURBS 的 NURBS 库

iphone - - (double) Objective C 中方法的有效返回类型