在Matlab中用前导点/点在指数中格式化数字

在Matlab中用前导点/点在指数中格式化数字,matlab,numbers,format,exponential,Matlab,Numbers,Format,Exponential,我有几个包含数字的变量 我需要所有的样式为“.xxxxx e+YY”的字符串 e、 g.“250”应为.25000E+03,0号始终为“.”领先 我尝试了几种方法,阅读了Matlab的帮助,在这里搜索,但到目前为止没有运气 有人知道诀窍吗?谢谢大家! 这里有一个方法。我假设这些数字是正数,否则你需要分别处理负号 x = 250; e = floor(log10(x))+1; s1 = sprintf('.%5i', round(x*10^(5-e))); s2 = sprintf('%02d',

我有几个包含数字的变量

我需要所有的样式为“.xxxxx e+YY”的字符串

e、 g.“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'-',我希望如此!请向我们展示您当前的尝试。这不是标准的工程符号,至少不像通常由*printf样式函数输出的那样。如果你真的需要这样的东西,你可能需要一起破解一些东西。你想基于这种格式手动生成字符串吗?您好,谢谢您的热烈欢迎!不幸的是,我绝对需要这种格式,因为它将被另一个程序读取,就像已经存在许多数据集的程序一样。到目前为止,我做得最好的是sprintf'%5.5E',250,它输出2.50000E+02。如果没有获取这种格式的函数,我将如何破解类似的东西?我对Matlab还是新手。学习很多,这意味着阅读Matlab帮助等等。你好,路易斯,谢谢你的建议。这很好,但仅适用于大于1的数字。我没有负数,但有介于0和1之间的数。1.2345给出。12345E+01 0.1给出。100000E+-1给出。100000E+00抱歉,格式说明符中的+放错了位置。现在试试,但现在指数可能少于两位数。在伊塔工作是的,这更好!我需要在E+/-之后正好有2个数字,所以我将其更改为:x=250;e=天花板10X;s=sprintf'.%5iE%+03d',圆形x*10^5-e,e;但是,对数行中的数字是多少?抱歉,糟糕的英语,如0.1、1和10仍然有错误。指数是错误的,而且它在点后显示了6位数字。太棒了!非常感谢你!