【问题标题】:Double precision in FortranFortran 中的双精度
【发布时间】:2010-12-04 08:21:49
【问题描述】:

我在 Windows 的 Visual Studio 中使用 Fortran 11 编译器。如何从项目属性中将 real 值设置为 double precision?例如,在 Fortran Powerstation (4.0) 中,我们有菜单选项settings->code generation->default real kind(这里我们可以设置real 数据类型的类型)。同样,我们如何在 Fortran 11 编译器中将double precision 设置为real 变量?

提前致谢。

【问题讨论】:

    标签: fortran


    【解决方案1】:

    您可以更改项目属性来实现此目的。

    打开项目属性对话框,然后导航到 ConfigurationProperties->Fortran->Data。

    然后选择 Default Real KIND 旁边的下拉菜单并选择“8(/real)size64)。

    我确信这在 VS2012 及以后有效。

    【讨论】:

      【解决方案2】:

      另一种方法是使用模块iso_fortran_env。然后你可以用预定义的变量REAL32、REAL64REAL128来指定实数类型,如果你的编译器支持的话,它们是单精度、双精度和四精度。

      例如:

      program main
      
          use iso_fortran_env
      
          implicit none
      
          real(real32)  :: a1 ! single precision
          real(real64)  :: a2 ! double precision
          real(real128) :: a4 ! quadruple precision
      
      end program
      

      【讨论】:

      • real(real64) 并不意味着“双精度实数”,或double precision,只是,如果支持,具有 64 位存储大小的实数。
      • 绝对不能在 MS Powerstation 中工作。但也许不需要。谁知道这么老的问题。但重点应该是建议使用一些常量。不是从哪里得到他们的价值观。那是次要恕我直言。这几乎没有回答最初的问题。
      • real(real64) 和双精度一样,我用的是多态变量,当你传递一个双精度数时,它会被real(real64) 捕获。
      • @Zeus 仅适用于某些编译器。仅在某些设置中。常见且通常为默认设置。但它们的含义并不相同。
      【解决方案3】:

      除非您希望在两个编译器下维护代码,否则您最好将源代码更改为使用 real*8。当您将来进行移植时,它也会保持一致的行为。

      【讨论】:

      • 正确使用 Fortran 并按照 TED 的建议指定变量的种类要好得多。甚至比 REAL*8 更好的是一种符合标准的声明方式,REAL(KIND=KIND(1d0)),或者,为了额外的可移植性和未来的证明 REAL(KIND=SELECTED_REAL_KIND(x,y))——但是你必须为您的程序计算 x 和 y。
      • 我同意。 REAL*8 不可移植,但取决于处​​理器和编译器。如果需要可移植性,应该使用 KIND。
      猜你喜欢
      • 2017-01-06
      • 2014-04-17
      • 1970-01-01
      • 1970-01-01
      • 2014-05-29
      • 2011-09-03
      • 1970-01-01
      • 2018-08-28
      • 1970-01-01
      相关资源
      最近更新 更多