Matlab科学计数法中的前导零

7
在Matlab中,使用e打印时,例如fprintf('%10.5e\n', pi/100),将得到结果3.14159e-02。但如果我想要数字有前导零,例如0.314159e-1怎么办?我该如何在Matlab中实现呢?
我提出这个问题的原因是我正在尝试打印到文件中,并需要具有前导零。否则,我就不在乎了。
谢谢。
2个回答

3
我认为没有什么巧妙的方法来做到这一点:
your_number = pi;
['0.' strrep(sprintf('%10.5e',your_number*10), '.', '')]

>> ans =

0.314159e+01

1
我的解决方案相当简单,但这只是为了说明问题。您可以自己编写一个小函数来查找数字中的相关字符串,在e之后修剪它,在开头添加0.,并在结尾处将指数增加1,例如:
function b=fooo(a)
b=a;
k1 = strfind(a, '.');
k2 = strfind(a, 'e-');
suffix=num2str(str2num(b(k2+1:k2+3))+1);
b(k2+1:end)=[];
b(k1)=[];
b=['0.' b suffix];

where an input like

ans=fooo(sprintf('%10.5e\n', pi/100))

将产生答案:

ans =
   0.314159e-1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接