【问题标题】:Output numbers in exponential notation with a predefined exponent使用预定义的指数以指数表示法输出数字
【发布时间】:2018-07-19 08:08:41
【问题描述】:

我有一组整数值,例如:

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

对于我的应用来说,方便的表示为<rounded_mantissa>E5(即some_val*105),所以对于上面的例子我想得到:

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

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

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

但我想知道是否可以指定 formatSpecsprintfnum2str(等等),这样它会输出具有特定指数值的数字(在这种情况下,@ 987654328@),不执行除法(如num2str(round(V/1E5).','%3uE5'))。

我正在使用 R2018a。

【问题讨论】:

    标签: matlab printf exponential notation format-specifiers


    【解决方案1】:

    你至少可以去掉round的使用,那我不认为还有什么更简写的,因为它只是一个单一的除法……

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

    .0 精度运算符无论如何都会强制为您舍入小数点 0。

    您只能使用formatSpec 属性指定位数(有效或小数点后),因此除非您有固定位数(您没有)你将无法单独使用它。

    【讨论】:

    • 感谢您的代码高尔夫提示 :) 接受,因为您无可争议的最后一段。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多