找回密码
 注册
关于网站域名变更的通知
查看: 548|回复: 3
打印 上一主题 下一主题

请问MATLAB中怎样控制输出格式中小数点后的位数?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-3-31 10:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x

( O0 e  A* K! y+ a) c" _今天想要解决一个问题,上网查了很久都没有得到满意的结果,比较失望,不过先把我对format 函数的理解记下来。4 F" Q; i. w# f5 a0 R! B( `

2 \' Q# r' ?6 C: V        我发现在MATLAB中想要控制输出格式中小数点后的位数是一件比较难的事情,比如你想让所有输出的数字小数点后都保留两位,这是一件非常难的事情,大致有以下几种解决办法:
# M0 m, h: s% l7 a7 H
; m1 i; [/ L' m& h, O4 l         1、最好的方法是使用 round 函数,但是使用这个函数的缺点是:该函数是的显示成为需要位数但必须付出截掉后面所有数字的代价,这样再次计算的时候就不精确。
: R( Q+ G  b3 A' Z; g/ y. d- \5 c$ v5 b# T$ y0 z
         eg.      a=1/3=0.33333333.....   想要保留小数点后两位,通过round函数保留后 a1=0.33; 但是保留后的数值a1彻底改变的a的大小;也就是存在这样的问题  3*a=1;但是 3*a1=0.99。
& F  H8 m& i1 v' T& `; V3 G7 s: |: d1 P0 M3 P
       2、digits+vpa  方法
0 {' Q1 _. J% Y8 s' a/ b; J' m2 i; n6 y- Y1 v6 I3 K% _7 `% a
       这种方法也可是达到保留小数的目的,但是经过vpa 命令之后,所保留的原数变成了符号函数。。。。这个就有点不好了,符号数计算时间大大长于数值数(这个词好像很不专业。。。呵呵),而且vpa命令所控制的长度指的是 有效数字,而不是小数点后的数字。。。也就是小数点以前的数字如果不一样,那么小数点后的数字肯定也不一样的,总之,很麻烦。. x' G7 f" W$ {. a3 I
$ F2 }3 A$ `2 I! i) m+ F
        3、用 format 命令
3 ~# N4 ]8 N- i  f5 W. S( l
4 F5 Z5 g. T* \       这是常用的方法,一般情况下 format short ,小数点后保留4位,还有一些其他的表示方法,这里不再多说,关键问题是,当小数点后数字大于1000以后,MATLAB会自动使用科学计数法。。。。也就是说 1234.5678,并不会显示成 1234.5678,而只会显示成 1.2345e3,实际上是省略了后面三位数。。。虽然计算的时候不会错。。。但是要导出数据时却会遇到很多麻烦。。。真是懊恼。。。
( V6 X: \" V5 z$ z3 p# y' Y) a0 w# V4 l
请哪位大侠帮我解释解释困扰   说了半天我就想知道 在matlab 种是否可以 不用科学计数法 完整的显示出 大于 1000而小数点后又有四位的数字,谢谢 !

该用户从未签到

2#
发表于 2020-3-31 18:56 | 只看该作者
fprintf 这个应该能显示的更好吧

该用户从未签到

3#
发表于 2020-3-31 18:56 | 只看该作者
是不是没写fprintf函数啊
  • TA的每日心情
    难过
    2020-4-21 15:36
  • 签到天数: 1 天

    [LV.1]初来乍到

    4#
    发表于 2020-4-21 14:48 | 只看该作者
    度娘一下就可以
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-7-22 16:26 , Processed in 0.109375 second(s), 23 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表