編輯:我已經重新提出了這個問題要更清楚。Matlab sprintf格式
有沒有人知道一個聰明的方式讓sprintf打印「%.6f尾隨零elminated」?這就是我要找的:
sprintf('%somemagic ', [12345678 123.45])
ans = 1234578 123.45
其中%somemagic是一些神奇的說明符。沒有一種格式似乎工作。
% no trailing zeros, but scientific for big nums
sprintf('%g ', [12345678 123.45])
ans = 1.23457e+007 123.45
% not approp for floats
sprintf('%d ', [12345678 123.45])
ans = 12345678 1.234500e+002
% trailing zeros
sprintf('%f ', [12345678 123.45])
ans = 12345678.000000 123.450000
% cannot specify sig figs after decimal (combo of gnovice's approaches)
mat = [12345678 123.45 123.456789];
for j = 1:length(mat)
fprintf('%s ', strrep(num2str(mat(j),20), ' ', ''));
end
我不認爲有一種方法可以做到這一點比通過每個元件循環以及基於關模的說明符其它(X,1)== 0或正則表達式使用以除去尾隨零。但你永遠不知道,人羣比我更聰明。
我的實際應用是打印出html表格中的數組元素。這是我目前笨重的解決方案:
for j = 1:length(mat)
if mod(mat(j),1) == 0
fprintf('<td>%d</td>', mat(j));
else
fprintf('<td>%g</td>', mat(j));
end
end
+1我希望避免regexprep,但我喜歡我可以避免循環。 – 2011-04-10 21:46:21