2015-01-15 19 views
0

我有几个包含数字的变量。具有前导点的格式编号/指数在Matlab中的点号

我需要'.xxxxxE + YY'作为字符串的样式。

例如'250'将是'.25000E + 03',没有0(总是'。'领先)。

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

有谁知道这个把戏吗?谢谢!

+0

欢迎SO!请告诉我们你目前的尝试。 – bish

+0

这不是标准的工程表示法,至少不是通常由* printf样式函数输出的。如果你真的需要这样的东西,你可能需要一起破解一些东西。 – horchler

+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)部分仅仅是一个引入的指数a '+''-'符号(的repmat S的一个给出了一个单个字符,另给出了一个空字符串)方式。当然也可以用if-else条款来完成。

示例结果:

  • 250'.25000E+03'
  • 1.23456'.12346E+01'
  • .1'.10000E+00
  • .'.12346E-01'
+0

你好,路易斯,谢谢你的建议。这工作不错,但仅适用于数字大于1,我没有负数,但确实有数字0和1之间 1.2345给出.12345E + 01 0.1给出了.100000E + -1 1给出.100000E + 00 – chiefymuc

+0

对不起,格式说明符中的“+”放错了位置。现在试试 –

+0

但是现在指数可能少于两位数字。在这上面工作 –