当我在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
任何帮助将不胜感激。
最诚挚的问候,
亚历克斯
答案 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上应该会有所帮助。