Matlab中关于sprintf的问题
Posted
技术标签:
【中文标题】Matlab中关于sprintf的问题【英文标题】:Issue on sprintf in Matlab 【发布时间】:2011-10-01 06:25:31 【问题描述】:如何在Matlab中打印如下......
0.01000E+02
我试过了
sprintf('%12.5e',[0.01000E+02])
它给了我
1.00000e+000
【问题讨论】:
【参考方案1】:你的格式有点具体。您应该考虑编写自己的输出函数。
但有几点建议:
使用upper
使 e 变大
通过正则表达式的 exp 编号中只有 2 位数字。 new_string = regexprep(old_string,'\d(\d2)$','\1')
在 exp 表示中以 0 开头的东西不是标准的 - 所以可能与 1e2
相乘,打印浮点数,然后附加 E+02
。
【讨论】:
谢谢....但是,这个 '0.01000E+02' 可以是任何 exp 数字...例如 0.01000E-10 .... 只是为了澄清您想要模式 0.02345E+67 中的结果?这意味着无论数字是多少,前面总是有 2 个零? 抱歉让我们难以理解...是的,模式是 0.XXXXXXXXE+XX...(X 是 (0-9) 之间的任何数字...非常感谢 好的,那么问题是你如何确定它是0.10000E01
还是0.01000E02
还是0.00001E05
@user974194:这就是使用 normalized scientific notation 的全部意义所在,第一个数字将始终介于 1 和 9 之间,这为我们提供了唯一的表示。否则,您如何从众多可能的形式中进行选择(如上面评论中的 bdecaf 所示)【参考方案2】:
如果我正确理解您的格式,['0.0' strrep(sprintf('%12.5E',v*100), '.', '')]
(带有v
您的值)之类的东西应该可以工作。
【讨论】:
以上是关于Matlab中关于sprintf的问题的主要内容,如果未能解决你的问题,请参考以下文章