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

时间:2010-12-28 21:49:26

标签: fortran fortran90

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

format(A20,ES18.8,A12,ES18.8)

我得到这样的输出:

p001t0000               3.49141273E+01obsgp_oden      1.00000000E+00

我更喜欢这个:

p001t0000           3.49141273E+01   obsgp_oden  1.00000000E+00

我尝试使用负值来表示宽度(比如在Python中),但没有骰子。那么,有没有办法对这些数字进行左对齐?

非常感谢提前!

4 个答案:

答案 0 :(得分:8)

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

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

  

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

  CHARACTER*8 CVAL 
  RVALUE = 98.6 
  WRITE(CVAL, '(SP, F7.2)') RVALUE
     

WRITE声明将填补   字符变量CVAL with   字符'+98.60'(注意那里   在每一端都是一片空白   号码,第一个因为号码   在7的领域是正确的   人物,第二个因为   记录被填充到声明的   长度为8个字符)。

     

一旦数字变成了一个   字符串可以处理   进一步以所描述的各种方式   在第7节中。这使得它成为可能,   例如,写数字   在一个领域左对齐,......

答案 1 :(得分:4)

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

答案 2 :(得分:2)

真正不优雅的是我的方法(我像洞穴女人一样编程),在编写简单的Fortran写入格式(不是LJ)之后,我使用Excel(csv)和ultraedit的组合来有效地删除空间得到所需的LJ直接跟着逗号(我需要将我的特定导入格式转换为另一个软件)。 BF

答案 3 :(得分:1)

如果您真正想要的是输出字段之间的空格而不是左对齐数字以留下空格,您可以简单地使用X编辑描述符。例如

format(A20,4X,ES18.8,4X,A12,4X,ES18.8)

将在每个字段和下一个字段之间插入4个空格。请注意,标准需要1X一个空格,一些当前编译器也接受非标准X