我有几个包含数字的变量。
我需要的是' .xxxxxE + YY'作为一个字符串。
e.g。 ' 250'将是' .25000E + 03'没有0(总是'。'领先)。
我尝试了几种方法,阅读了Matlab的帮助,谷歌搜索和搜索这里,但到目前为止没有运气。
有人知道这个伎俩吗?谢谢!
答案 0 :(得分:0)
这是一种方式。我假设数字是正数(否则你需要分别处理减号)。
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)
部分只是为指数引入'+'
或'-'
符号的一种方式(其中一个repmat
s给出一个字符,另一个给出一个空字符串)。当然,也可以使用if
- else
子句来完成。
示例结果:
250
提供'.25000E+03'
1.23456
提供'.12346E+01'
.1
提供'.10000E+00
.0123456
提供'.12346E-01'