Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Fortran 宽度为零的格式描述符,如F0.6或G0.8_Fortran_Gfortran - Fatal编程技术网

Fortran 宽度为零的格式描述符,如F0.6或G0.8

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格式提供

fortran格式说明符的标准文档说明了如何使用两个参数控制大多数格式,通常称为
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