Fortran 格式说明符的标准文档解释了如何使用两个参数(通常称为w
和 )控制大多数格式d
。例如,格式说明符Fw.d
表示将打印出一个数字,其中包含w
字符宽度(包括小数点)和d
小数点右侧的数字。G 格式类似,只是d
被解释为要打印的有效位数。
到目前为止,我找到的所有文档都使用w
is > 0 的示例,但我最近在这里了解到,您可以在格式说明符中使用零作为宽度参数,这对于 CSV 输出之类的内容非常有用。似乎w=0
被解释为“可变宽度”,并且您可以根据需要获得尽可能多或尽可能小的空间,以满足参数d
(它为 F 格式提供小数位,为 G 格式提供有效数字)。例如,以下是具有不同值的 F 格式(“b”表示空白字符):
! tested with gfortran 5.5 on linux
print '(F8.3)', 7.777 ! prints bbb7.777
print '(F4.3)', 7.777 ! prints ****
print '(F0.3)', 7.777 ! prints 7.777
Run Code Online (Sandbox Code Playgroud)
这一切似乎都有道理。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
Run Code Online (Sandbox Code Playgroud)
我的问题是我通过反复试验的理解是否正确,这是否在任何地方都有记录,以及它是否是 Fortran 标准的一部分,还是特定于实现的?
(我花了很多时间在谷歌上搜索这些信息,但找不到任何东西,也许是因为我不知道要使用什么搜索词。)