0

这是一个非常具体的例子

>> S = num2str(12345,'%6.0e')
S =
1e+04

这很好,因为我只想要我的第一个数字和指数符号。但是我也想在指数中添加前导零以填充宽度,但我无法找到获得以下内容的方法......

1e+004

同时用前导零填充有效数字非常简单

>> S = num2str(12345,'%06.0e')
S =
01e+04

那么是否有适合我想要的格式?还是快速完成它的技巧?

4

2 回答 2

2

指数始终是一个补零的两位数值。要添加,比如说,你可以使用两个零

regexprep(num2str(12345, '%6.0e'), '\+', '\+00')

并达到

ans =
1e+0004

编辑:为了涵盖您可以使用的负指数

regexprep(num2str(0.12345, '%6.0e'), '(\+|\-)', '$100')

达到

ans =
1e-0001

并且,为了涵盖三位数的指数

regexprep(num2str(1e-100, '%6.0e'), '(\+|\-)(\d{2,3})$', {'$10$2', '$10$2'})

ans =
1e-0100

regexprep(num2str(1e-10, '%6.0e'), '(\+|\-)(\d{2,3})$', {'$10$2', '$10$2'})

ans =
1e-0010
于 2013-06-21T16:10:47.130 回答
0

好吧,我认为你必须编辑,你说你想要的是你得到的:D

但是,如果我正确理解了您要查找的内容,此功能将为您提供帮助

function printX(x, digits)
    format = sprintf('\t%%.%de', digits - 1);
    strcat(inputname(1), ' = ', sprintf(format, x))
end
于 2013-06-21T16:00:30.543 回答