在matlab中将浮点数写入文本

在matlab中将浮点数写入文本,matlab,io,Matlab,Io,这是我的代码,我取数组的平均值 for m=1:Q for n=1:W k=k+arr(m,n); end k=k/W fprintf(fid,'%d\n',k); k=0; end 它在命令窗口中打印正确的值,但在文本中打印不正确的值 命令窗口输出: k = 52.4665 k = 3.9971 k = -3.5033 ...... 文本输出: 5.246647e+01 3.997

这是我的代码,我取数组的平均值

for m=1:Q
    for n=1:W
        k=k+arr(m,n);
    end      
    k=k/W
    fprintf(fid,'%d\n',k);
    k=0;
end 
它在命令窗口中打印正确的值,但在文本中打印不正确的值

命令窗口输出:

k =   52.4665

k =    3.9971

k =   -3.5033

......
文本输出:

     5.246647e+01

    3.997084e+00

    -3.503343e+00

    -1.862232e+00 

...

这是一个格式问题。如果将
fprintf
行更改为

fprintf(fid,'%1.4f\n',k);
您应该得到与在MATLAB中得到的结果相同的结果

查看的formatSpec部分


这些数字是相同的
52.4665==5.246647e+01
(在打印分辨率范围内)。你想用和Matlab相同的格式打印值吗?您是否查看了帮助fprintf?或
文件fprintf
?您将能够获得接近的结果,但请注意,您可以使用该命令更改值在命令窗口中的显示方式-如果愿意,您甚至可以选择以
5.246647e+01
的形式显示数字。谢谢。当我写g而不是f时,它是有效的。这对小值有效。对于
abs(k)>=1e9
Matlab将
1.0000e+09
打印到命令窗口。但是,
fprintf(1,'%1.4f\n',1e9)
返回
100000000.0000
。这是用于
格式缩写