如何在打印语句中创建 space?
How do I create a space in a print statement?
我有一些代码以前在 运行 我的 Linux 盒子上使用 IDL 时可以使用。当我在 Windows 框上 运行 IDL 时,我不确定为什么格式发生了变化。
具体来说,问题似乎是打印语句没有在值之间创建 space。
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, 格式='(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
如有任何帮助,我们将不胜感激。
此致,
亚历克斯
在你的例子中:
printf, prof2d, FORMAT='(1(i),500(e15.8))',i+1, p2d(i,*)
"e15.8"表示指数记数法("e"),数字总共有15个space,小数点后8位。这就是 Linux 框似乎在做的事情,因为“0.00000000e+00”只有 14 个字符长,在值之间给出一个 space。我不知道为什么 Windows 框会做一些不同的事情。但要给 space 之间的值增加 15 到 16 或更多,如:
printf, prof2d, FORMAT='(1(i),500(e16.8))',i+1, p2d(i,*)
这将在 Linux 上的值之间给出两个 spaces,但应该对 Windows 上的你有所帮助。
我有一些代码以前在 运行 我的 Linux 盒子上使用 IDL 时可以使用。当我在 Windows 框上 运行 IDL 时,我不确定为什么格式发生了变化。
具体来说,问题似乎是打印语句没有在值之间创建 space。
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, 格式='(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
如有任何帮助,我们将不胜感激。
此致,
亚历克斯
在你的例子中:
printf, prof2d, FORMAT='(1(i),500(e15.8))',i+1, p2d(i,*)
"e15.8"表示指数记数法("e"),数字总共有15个space,小数点后8位。这就是 Linux 框似乎在做的事情,因为“0.00000000e+00”只有 14 个字符长,在值之间给出一个 space。我不知道为什么 Windows 框会做一些不同的事情。但要给 space 之间的值增加 15 到 16 或更多,如:
printf, prof2d, FORMAT='(1(i),500(e16.8))',i+1, p2d(i,*)
这将在 Linux 上的值之间给出两个 spaces,但应该对 Windows 上的你有所帮助。