fortran基本语法

real(WP), parameter :: Density = 100.0_WP ! kg/m^3

想问一下这里的100.0_WP 中的_WP是什么含义,为什么要在一个常数后面加_WP呢

wp表示数据精度,变量和常量、常数都有精度。你可以看看视频 https://www.bilibili.com/video/BV1XD4y1S7jz?p=2

  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7566808
  • 除此之外, 这篇博客: Fortran笔记,文件,part1-文件读取的概念、基本操作中的 2.4 其他文件运行命令 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • BACKSPACE( UNIT=number, ERR=errlabel, IOSTAT=iostat )

    把文件的读写位置回退一步(?步长是多少?顺序读取和直接读取均可?)

    ENDFILE( UNIT=number, ERR=errlabel, IOSTAT=iostat )

    把文件的读写位置变成文件的结尾(?舍弃后续内容)

    REWIND( UNIT=number, ERR=errlabel, IOSTAT=iostat )

    把文件的读写位置倒回文件开头

    CLOSE( UNIT=number, STATUS=string, ERR=errlabel, IOSTAT=iostat )

    把文件关闭,对应OPEN的操作。

    STATUS

    关闭后文件的状态。

    'KEEP':文件关闭后,保留住这个文件,默认值

    'DELETE':文件关闭后,删除这个文件(?Fortran删除文件的操作,须先OPEN,再CLOSE?)

  • 以下回答由chatgpt基于相关博客总结生成:

    根据参考资料中的内容,无法得出_WP指的具体含义。在Fortran中,常数后面加上_WP(或_DP)表示使用默认的精度,即单精度浮点数使用_​WP(without precision), 双精度浮点数使用_​DP(double precision)。这样做可以使程序的可读性更好,并且在更改精度时,只需更改一处代码即可。下面给出一个简单的例子:

    program example
        implicit none
        real(4) :: a = 100.0_WP
        real(8) :: b = 100.0_DP
        write(*,*) "Single precision:", a
        write(*,*) "Double precision:", b
    end program example
    

    输出结果为:

    Single precision:  100.
    Double precision:   100.00000000000000
    

    可以看到,加上_WP或_DP并不会改变常数的值,只是指定了使用的精度。