如何摆脱 Fortran 打印输出中不需要的间距?
How to get rid of unwanted spacing in Fortran's print output?
这看起来可能是一个微不足道的问题,但我无法通过谷歌搜索找到任何答案。我有这个小程序:
Program Test_spacing_print
Integer:: N
Real:: A,B
N=4; A=1.0; B=100.0
print*,'N =',N
print*,'A =',A,' B =',B
print '(2(A3,F8.2,1X))' ,'A =',A,' B =',B
print 20, A,B
20 format('A =',F8.2,x,'B =',F8.2)
End Program Test_spacing_print
这给了我输出:
N = 4
A = 1.00000000 B = 100.000000
A = 1.00 B 100.00
A = 1.00 B = 100.00
我想去掉 =
符号后不需要的 space,即我想要的输出应该是这样的(1 space after =
) :
N = 4
A = 1.00000000 B = 100.000000
A = 1.00 B = 100.00
A = 1.00 B = 100.00
在 fortran 中可以吗?
你说你在输出中有 "unwanted" space,但你确实有你要求的 space 与你指定的显式格式。当您没有提供格式时,列表定向输出意味着您对间距没有发言权。
要输出 A
,您有编辑描述符 F8.2
:字段宽度将为 8。小数点后有两位数字,小数点本身为您留下五位数字小数点前的数字(和符号)。因此,对于没有打印可选符号的 A
值 1.
,您将有四个空格。
就像 Fortran 95 引入了 I0
edit descriptor 所以它允许 F0.d
。 [对于其他描述符,尽管后来添加了 G0.d
。] F0.2
将提供小数点后两位数字的最小字段宽度,这就是您想要的。但请注意,您需要在 =
符号后明确添加一个空格:
print '("N = ", I0)', N
print '(2(A4,F0.2,:,1X))' ,'A = ',A,'B = ',B
[我还使用了 :
编辑描述符来避免尾随空白。]
如果你想要一个真正的 Fortran 90 答案,就像你标记的那样,那么它不会那么好,但它仍然可以完成。
这看起来可能是一个微不足道的问题,但我无法通过谷歌搜索找到任何答案。我有这个小程序:
Program Test_spacing_print
Integer:: N
Real:: A,B
N=4; A=1.0; B=100.0
print*,'N =',N
print*,'A =',A,' B =',B
print '(2(A3,F8.2,1X))' ,'A =',A,' B =',B
print 20, A,B
20 format('A =',F8.2,x,'B =',F8.2)
End Program Test_spacing_print
这给了我输出:
N = 4
A = 1.00000000 B = 100.000000
A = 1.00 B 100.00
A = 1.00 B = 100.00
我想去掉 =
符号后不需要的 space,即我想要的输出应该是这样的(1 space after =
) :
N = 4
A = 1.00000000 B = 100.000000
A = 1.00 B = 100.00
A = 1.00 B = 100.00
在 fortran 中可以吗?
你说你在输出中有 "unwanted" space,但你确实有你要求的 space 与你指定的显式格式。当您没有提供格式时,列表定向输出意味着您对间距没有发言权。
要输出 A
,您有编辑描述符 F8.2
:字段宽度将为 8。小数点后有两位数字,小数点本身为您留下五位数字小数点前的数字(和符号)。因此,对于没有打印可选符号的 A
值 1.
,您将有四个空格。
就像 Fortran 95 引入了 I0
edit descriptor 所以它允许 F0.d
。 [对于其他描述符,尽管后来添加了 G0.d
。] F0.2
将提供小数点后两位数字的最小字段宽度,这就是您想要的。但请注意,您需要在 =
符号后明确添加一个空格:
print '("N = ", I0)', N
print '(2(A4,F0.2,:,1X))' ,'A = ',A,'B = ',B
[我还使用了 :
编辑描述符来避免尾随空白。]
如果你想要一个真正的 Fortran 90 答案,就像你标记的那样,那么它不会那么好,但它仍然可以完成。