这可能看起来像一个微不足道的问题,但我通过谷歌搜索找不到任何答案。我有这个小程序:
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
我希望摆脱=
符号后不需要的空间,即我想要的输出看起来像=
之后的1个空格:
N = 4
A = 1.00000000 B = 100.000000
A = 1.00 B = 100.00
A = 1.00 B = 100.00
有没有可能在fortran?
答案 0 :(得分:3)
您说输出中有“不需要的”空间,但您确实拥有指定显式格式所要求的空间。当您没有提供格式时,列表导向输出意味着您对间距没有发言权。
要输出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答案,就像你标记的一样,那么它就不会那么好但是它仍然可以完成。