我有幾個包含數字的變量。具有前導點的格式編號/指數在Matlab中的點號
我需要'.xxxxxE + YY'作爲字符串的樣式。
例如'250'將是'.25000E + 03',沒有0(總是'。'領先)。
我嘗試了幾種方法,閱讀Matlab的幫助和谷歌搜索和搜索,但沒有運氣到目前爲止。
有誰知道這個把戲嗎?謝謝!
我有幾個包含數字的變量。具有前導點的格式編號/指數在Matlab中的點號
我需要'.xxxxxE + YY'作爲字符串的樣式。
例如'250'將是'.25000E + 03',沒有0(總是'。'領先)。
我嘗試了幾種方法,閱讀Matlab的幫助和谷歌搜索和搜索,但沒有運氣到目前爲止。
有誰知道這個把戲嗎?謝謝!
這是一種方法。我假設這些數字是正數(否則你需要單獨處理負號)。
x = 250;
e = floor(log10(x))+1;
s1 = sprintf('.%5i', round(x*10^(5-e)));
s2 = sprintf('%02d', abs(e));
s = [s1 'E' repmat('+', e>=0) repmat('-', e<0) s2];
字符串的repmat('+', e>=0) repmat('-', e<0)
部分僅僅是一個引入的指數a '+'
或'-'
符號(的repmat
S的一個給出了一個單個字符,另給出了一個空字符串)方式。當然也可以用if
-else
條款來完成。
示例結果:
250
給'.25000E+03'
1.23456
給'.12346E+01'
.1
給'.10000E+00
.
給'.12346E-01'
你好,路易斯,謝謝你的建議。這工作不錯,但僅適用於數字大於1,我沒有負數,但確實有數字0和1之間 1.2345給出.12345E + 01 0.1給出了.100000E + -1 1給出.100000E + 00 – chiefymuc
對不起,格式說明符中的「+」放錯了位置。現在試試 –
但是現在指數可能少於兩位數字。在這上面工作 –
歡迎SO!請告訴我們你目前的嘗試。 – bish
這不是標準的工程表示法,至少不是通常由* printf樣式函數輸出的。如果你真的需要這樣的東西,你可能需要一起破解一些東西。 – horchler
您是否想根據該格式手動生成字符串? –