在 Matlab 中以指数形式格式化带前导 point/dot 的数字

Format number with leading point/dot in exponential in Matlab

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

我需要的都是'.xxxxxE+YY'风格的字符串。

例如'250' 将是没有 0 的 '.25000E+03'(始终是 '.' 前导)。

我尝试了几种方法,阅读了 Matlab 帮助并在此处进行了 google 和搜索,但到目前为止没有成功。

有人知道这个技巧吗?谢谢!

这是一种方法。我假设数字是正数(否则你需要单独处理减号)。

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 中的一个给出了一个字符,另一个给出一个空字符串)。当然也可以用 if-else 子句来完成。

示例结果:

  • 250 给出 '.25000E+03'
  • 1.23456 给出 '.12346E+01'
  • .1 给出 '.10000E+00
  • .0123456 给出 '.12346E-01'