EDA365电子论坛网
标题:
请问MATLAB中怎样控制输出格式中小数点后的位数?
[打印本页]
作者:
qpggup
时间:
2020-3-31 10:55
标题:
请问MATLAB中怎样控制输出格式中小数点后的位数?
8 J3 z9 _2 @; b/ g
今天想要解决一个问题,上网查了很久都没有得到满意的结果,比较失望,不过先把我对format 函数的理解记下来。
" k! X, z3 ^ j3 u8 Y; h' ~
$ \+ |5 y1 L/ i& n
我发现在MATLAB中想要控制输出格式中小数点后的位数是一件比较难的事情,比如你想让所有输出的数字小数点后都保留两位,这是一件非常难的事情,大致有以下几种解决办法:
* f c- k% J* y( b6 @6 {
0 z" @' r& W: D- B
1、最好的方法是使用 round 函数,但是使用这个函数的缺点是:该函数是的显示成为需要位数但必须付出截掉后面所有数字的代价,这样再次计算的时候就不精确。
7 ?( n: _# b( C
. k5 s/ Y! D; f4 n+ A9 W
eg. a=1/3=0.33333333..... 想要保留小数点后两位,通过round函数保留后 a1=0.33; 但是保留后的数值a1彻底改变的a的大小;也就是存在这样的问题 3*a=1;但是 3*a1=0.99。
8 c. e6 G; O) P
7 f' @2 P& F$ |: S
2、digits+vpa 方法
# w" |; H3 D% l( [1 `5 H
# \; P5 ^1 `* S& l
这种方法也可是达到保留小数的目的,但是经过vpa 命令之后,所保留的原数变成了符号函数。。。。这个就有点不好了,符号数计算时间大大长于数值数(这个词好像很不专业。。。呵呵),而且vpa命令所控制的长度指的是 有效数字,而不是小数点后的数字。。。也就是小数点以前的数字如果不一样,那么小数点后的数字肯定也不一样的,总之,很麻烦。
$ l' A2 Y Y/ L. B: n1 M
. F1 s! ~9 q: l) G* {4 O
3、用 format 命令
/ b2 }. r0 L# k
$ s- }/ Q: Z! T$ B
这是常用的方法,一般情况下 format short ,小数点后保留4位,还有一些其他的表示方法,这里不再多说,关键问题是,当小数点后数字大于1000以后,MATLAB会自动使用科学计数法。。。。也就是说 1234.5678,并不会显示成 1234.5678,而只会显示成 1.2345e3,实际上是省略了后面三位数。。。虽然计算的时候不会错。。。但是要导出数据时却会遇到很多麻烦。。。真是懊恼。。。
# ~( m5 F& c! V4 n- P& j" W8 ^$ J8 x
3 D. I2 L5 T6 n5 K7 }
请哪位大侠帮我解释解释困扰 说了半天我就想知道 在matlab 种是否可以 不用科学计数法 完整的显示出 大于 1000而小数点后又有四位的数字,谢谢 !
作者:
NNNei256
时间:
2020-3-31 18:56
fprintf 这个应该能显示的更好吧
作者:
CCxiaom
时间:
2020-3-31 18:56
是不是没写fprintf函数啊
作者:
roxie
时间:
2020-4-21 14:48
度娘一下就可以
欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/)
Powered by Discuz! X3.2