我怎样才能在fortran中左对齐数值输出?

mis*_*haF 9 fortran fortran90

我在fortran中写了一些简单的输出,但我想要空白分隔符.但是,如果使用以下语句:

format(A20,ES18.8,A12,ES18.8)
Run Code Online (Sandbox Code Playgroud)

我得到这样的输出:

p001t0000               3.49141273E+01obsgp_oden      1.00000000E+00
Run Code Online (Sandbox Code Playgroud)

我更喜欢这个:

p001t0000           3.49141273E+01   obsgp_oden  1.00000000E+00
Run Code Online (Sandbox Code Playgroud)

我尝试使用负值宽度(如在Python中),但没有骰子.那么,有没有办法让数字左对齐?

提前谢谢了!

Ubu*_*ist 8

没有一种特别美丽的方式.但是,使用内部WRITE语句将数字转换为文本字符串(以前使​​用ENCODE语句完成),然后操作文本可能会满足您的需要.

引用http://rsusu1.rnd.runnet.ru/develop/fortran/prof77/node168.html

内部文件WRITE通常用于通过使用合适的格式规范将数值转换为字符串,例如:

  CHARACTER*8 CVAL 
  RVALUE = 98.6 
  WRITE(CVAL, '(SP, F7.2)') RVALUE
Run Code Online (Sandbox Code Playgroud)

WRITE语句将使用字符'+98.60'填充字符变量CVAL(请注意,数字的每一端都有一个空白,第一个因为数字在7个字符的字段中右对齐,第二个因为记录被填充到声明的8个字符的长度).

一旦数字变成了一个字符串,它就可以按照第7节中描述的各种方式进一步处理.这使得例如可以在字段中写入左对齐的数字,......


M. *_* B. 7

Fortran 95 更容易做到这一点,但仍然不是微不足道的。使用 write 语句将数字或其他项目写入字符串(如第一个答案中所示)。然后使用 Fortran 95 内在的“ADJUSTL”左调整字符串的非空白字符。