Fortran 宽度为零的格式描述符,如F0.6或G0.8
fortran格式说明符的标准文档说明了如何使用两个参数控制大多数格式,通常称为Fortran 宽度为零的格式描述符,如F0.6或G0.8,fortran,gfortran,Fortran,Gfortran,fortran格式说明符的标准文档说明了如何使用两个参数控制大多数格式,通常称为w和d。例如,Fw.d格式说明符意味着将打印出宽度为w字符(包括小数点)和小数点右侧的d数字的数字。G格式类似,只是d被解释为要打印的有效位数 到目前为止,我找到的所有文档都使用了w为>0的示例,但我最近了解到,可以在格式说明符中使用0作为宽度参数,这对于CSV输出之类的东西非常有用。似乎w=0被解释为“可变宽度”,您可以获得所需的尽可能多或尽可能少的空间,以满足d参数的要求(该参数为F格式提供小数位数,为G格式提供
w
和d
。例如,Fw.d
格式说明符意味着将打印出宽度为w
字符(包括小数点)和小数点右侧的d
数字的数字。G格式类似,只是d
被解释为要打印的有效位数
到目前为止,我找到的所有文档都使用了w
为>0的示例,但我最近了解到,可以在格式说明符中使用0作为宽度参数,这对于CSV输出之类的东西非常有用。似乎w=0
被解释为“可变宽度”,您可以获得所需的尽可能多或尽可能少的空间,以满足d
参数的要求(该参数为F格式提供小数位数,为G格式提供有效位数)。例如,以下是具有不同值的F格式(“b”表示空白字符):
这一切似乎都有道理。G让我有点困惑,因为G8.3
没有任何空格,我也不知道G4.3
失败的原因,但在任何情况下都是这样的:
print '(G8.3)', 7.777 ! prints 7.78
print '(G4.3)', 7.777 ! prints ****
print '(G0.3)', 7.777 ! prints 7.78
我的问题是,我通过试错法的理解是否正确,这是否在任何地方都有记录,它是Fortran标准的一部分,还是特定于实现
(我花了很多时间在谷歌上搜索这些信息,但找不到任何东西,可能是因为我不知道该用什么搜索词。)是的,这是标准的Fortran 95行为。Fortran 2018版(13.7.2.1(6)): 在输出时,通过I、B、O、Z、D、E、EN、ES、EX、F和G编辑字段宽度的指定值 w可能是零。在这种情况下,处理器选择最小的正实际字段宽度 不会导致字段中填充星号。输入时,w的规定值不得为零 还有
G0
通用编辑(F2018 13.7.5),可用于上述任何内在数据类型,并在Fortran 2008中引入。它包括所有数字类型以及逻辑(L1
)和字符(A
)
print '(G8.3)', 7.777 ! prints 7.78
print '(G4.3)', 7.777 ! prints ****
print '(G0.3)', 7.777 ! prints 7.78