2013-05-08 25 views
7

In Matlab, quando si stampa utilizzando e come fprintf('%10.5e\n', pi/100), il risultato sarà 3.14159e-02. Tuttavia, cosa succede se voglio che il numero abbia uno zero iniziale come 0.314159e-1? Come posso gestirlo con Matlab?Numero zero nella notazione scientifica di Matlab

La ragione per cui chiedo è che sto cercando di stampare su un file che ho bisogno di avere zeri iniziali. Altrimenti, non mi importerebbe.

Grazie.

risposta

3

non credo ci sia un modo intelligente per Fallo:

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

>> ans = 

0.314159e+01 
1

la mia soluzione è piuttosto grezza ma questo è solo per illustrare. È possibile farlo da soli con una piccola funzione che andrà a cercare le stringhe rilevanti nel numero, finiture dopo e, aggiungere 0. in principio e di incremento dal 1 l'esponente, alla fine, ad esempio:

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]; 

dove un ingresso come

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

produrrà la risposta:

ans = 
    0.314159e-1 
Problemi correlati