以预定义的指数形式输出数字

时间:2018-07-19 08:08:41

标签: matlab printf exponential notation format-specifiers

我有一组整数值,例如:

V = [26767559, 6022443, 9923637]; % etc.

对于我的应用程序,将它们表示为<rounded_mantissa>E5(即 some_val * 10 5 )很方便,因此对于上面的示例,我要得到:

N = ["268E5", "60E5", "99E5"]; % I won't mind if it's E+05

目前,我正在使用几种可能的解决方法之一来实现此输出,

N = round(V*1E-5) + "E5";

但是我想知道是否可以指定formatSpecsprintf(等等)中的num2str,以便它可以输出具有特定指数值的数字(在这种情况下为5),而无需执行除法(如num2str(round(V/1E5).','%3uE5')中的除法)。

我正在使用R2018a。

1 个答案:

答案 0 :(得分:1)

您至少可以删除round的使用,然后我认为没有任何进一步的捷径,因为它只是一个部门...

N = num2str( V/1e5, '%.0fE5' )

无论如何,.0精度运算符将强制为您舍入小数点后0位。

使用formatSpec属性只能指定位数的数字(有效位数或小数点后),因此除非您有固定的数字位数(否则您不能这样做) t)您将无法单独使用它。