在Matlab中以指数形式引导点/点的格式编号

时间:2015-01-15 20:18:34

标签: matlab numbers format exponential

我有几个包含数字的变量。

我需要的是' .xxxxxE + YY'作为一个字符串。

e.g。 ' 250'将是' .25000E + 03'没有0(总是'。'领先)。

我尝试了几种方法,阅读了Matlab的帮助,谷歌搜索和搜索这里,但到目前为止没有运气。

有人知道这个伎俩吗?谢谢!

1 个答案:

答案 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'