2013-05-08 37 views
7

Trong Matlab, khi in bằng cách sử dụng e chẳng hạn như fprintf('%10.5e\n', pi/100), một kết quả sẽ là 3.14159e-02. Tuy nhiên, nếu tôi muốn số có số 0 đứng đầu như 0.314159e-1 thì sao? Làm thế nào tôi có thể quản lý điều này với Matlab?Dẫn đầu số không trong ký hiệu khoa học của Matlab

Lý do tôi hỏi là tôi đang cố in một tệp mà tôi cần có các số 0 đứng đầu. Nếu không, tôi sẽ không quan tâm.

Cảm ơn.

Trả lời

3

tôi không nghĩ có bất kỳ cách thông minh để làm điều đó:

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

>> ans = 

0.314159e+01 
1

giải pháp của tôi khá thô nhưng đây chỉ là minh họa. Bạn có thể làm điều đó cho mình với một chức năng nhỏ mà sẽ tìm kiếm các chuỗi liên quan về số lượng, cắt nó sau khi e, thêm 0. vào đầu và them về bởi 1 số mũ ở cuối, ví dụ:

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

nơi một đầu vào như

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

sẽ mang lại câu trả lời:

ans = 
    0.314159e-1 
Các vấn đề liên quan