3

fortran 格式说明符的标准文档解释了如何使用两个参数控制大多数格式,通常称为wd。例如,格式说明符Fw.d表示数字将打印出w字符宽度(包括小数)和小数点d右侧的数字。G 格式类似,除了d被解释为要打印的有效位数。

到目前为止,我发现的所有文档都使用了w> 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

这一切似乎都说得通。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 标准的一部分,还是特定于实现?

(我花了很多时间在谷歌上搜索这些信息,但找不到任何东西,也许是因为我不知道要使用什么搜索词。)

4

1 回答 1

3

是的,这是标准的 Fortran 95 行为。Fortran 2018 版(N2146 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)。

于 2019-12-05T21:16:26.533 回答