如何在打印对帐单中创建空格?

时间:2018-10-03 01:59:03

标签: format idl-programming-language

当我在Linux机器上运行IDL时,我有一些以前可以工作的代码。我不确定在Windows机器上运行IDL时为什么格式已更改。

具体地说,似乎问题是打印语句未在值之间创建空格。

OPENW, prof2d, outfilename+'.prf', /GET_LUN
printf, prof2d, numalts, altstart, delalt, numlats, latstart,dellat 
printf, prof2d, format='(1(f3.1),500(i))', 0.0, findgen(num)+1.0
for i=0, numlats-1 do begin
printf, prof2d, FORMAT='(1(i),500(e15.8))',i+1, p2d(i,*)
endfor   
CLOSE, prof2d & FREE_LUN, prof2d
popd

这似乎是一个有问题的行:     printf,prof2d,FORMAT ='(1(i),500(e15.8))',i + 1,p2d(i,*)

Linux盒产生:

  1 0.00000000e+00 0.00000000e+00 0.00000000e+00....9.17620019e+09

当Windows框产生时:

1 0.00000000e + 000.00000000e + 000.00000000e + 00 .... 9.17620019e + 09

任何帮助将不胜感激。

最诚挚的问候,

亚历克斯

1 个答案:

答案 0 :(得分:0)

在您的示例中:

printf, prof2d, FORMAT='(1(i),500(e15.8))',i+1, p2d(i,*)

“ e15.8”表示指数表示法(“ e”),该数字总数为15个空格,小数点后为8位。这是Linux机器似乎正在做的事情,因为“ 0.00000000e + 00”只有14个字符长,值之间留有一个空格。我不知道为什么Windows框会做一些不同的事情。但是要在两个值之间留出空格,请将15增加到16或更多,例如:

printf, prof2d, FORMAT='(1(i),500(e16.8))',i+1, p2d(i,*)

在Linux上,这将在值之间留出两个空格,但在Windows上应该会有所帮助。