宽度为零的格式描述符,如 F0.6 或 G0.8
Format descriptors with zero width, like F0.6 or G0.8
fortran 格式说明符的标准文档解释了如何使用两个参数控制大多数格式,通常称为 w
和 d
。例如,格式说明符 Fw.d
表示将打印出宽度为 w
个字符(包括小数点)和小数点右侧 d
位数字的数字。 G 格式类似,只是 d
被解释为要打印的有效数字位数。
到目前为止我找到的所有文档都使用 w
> 0 的示例,但我最近了解到 here 您可以在格式说明符中使用零作为宽度参数,这对于 CSV 输出之类的东西非常有用。似乎 w=0
被解释为 "variable width" 并且您根据需要获得尽可能多或尽可能少的 space 以满足 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 标准的一部分,或者它是否特定于实现?
(我花了很多时间谷歌搜索此信息但找不到任何东西,可能是因为我不知道要使用什么搜索词。)
是的,这是标准的 Fortran 95 行为。 Fortran 2018 版本 (N2146 13.7.2.1 (6)):
On output, with I, B, O, Z, D, E, EN, ES, EX, F, and G editing, the specified value of the field width
w may be zero. In such cases, the processor selects the smallest positive actual field width that does
not result in a field filled with asterisks. The specified value of w shall not be zero on input.
还有 G0
通用编辑 (F2018 13.7.5),可用于任何提到的内部数据类型,并在 Fortran 2008 中引入。它包括所有数字类型和逻辑 ( L1
) 和字符 (A
).
fortran 格式说明符的标准文档解释了如何使用两个参数控制大多数格式,通常称为 w
和 d
。例如,格式说明符 Fw.d
表示将打印出宽度为 w
个字符(包括小数点)和小数点右侧 d
位数字的数字。 G 格式类似,只是 d
被解释为要打印的有效数字位数。
到目前为止我找到的所有文档都使用 w
> 0 的示例,但我最近了解到 here 您可以在格式说明符中使用零作为宽度参数,这对于 CSV 输出之类的东西非常有用。似乎 w=0
被解释为 "variable width" 并且您根据需要获得尽可能多或尽可能少的 space 以满足 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 标准的一部分,或者它是否特定于实现?
(我花了很多时间谷歌搜索此信息但找不到任何东西,可能是因为我不知道要使用什么搜索词。)
是的,这是标准的 Fortran 95 行为。 Fortran 2018 版本 (N2146 13.7.2.1 (6)):
On output, with I, B, O, Z, D, E, EN, ES, EX, F, and G editing, the specified value of the field width w may be zero. In such cases, the processor selects the smallest positive actual field width that does not result in a field filled with asterisks. The specified value of w shall not be zero on input.
还有 G0
通用编辑 (F2018 13.7.5),可用于任何提到的内部数据类型,并在 Fortran 2008 中引入。它包括所有数字类型和逻辑 ( L1
) 和字符 (A
).