我有几个包含数字的变量。具有前导点的格式编号/指数在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
您是否想根据该格式手动生成字符串? –