7

e在 Matlab 中,当使用诸如one进行打印时fprintf('%10.5e\n', pi/100),结果为3.14159e-02. 但是,如果我希望数字有前导零,例如0.314159e-1?如何使用 Matlab 进行管理?

我问的原因是我正在尝试打印到需要前导零的文件。否则,我不会在意。

谢谢。

4

2 回答 2

3

我认为没有任何聪明的方法可以做到这一点:

your_number = pi;
['0.' strrep(sprintf('%10.5e',your_number*10), '.', '')]

>> ans =

0.314159e+01
于 2013-05-09T01:20:08.633 回答
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];

像这样的输入

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

将产生答案:

ans =
   0.314159e-1
于 2013-05-09T01:17:23.793 回答