目录

  • 一、问题引出与求证
  • 二、问题查阅与解决
  • 三、MATLAB如何修改计算结果保留的有效数字
  • 四、拓展——数值显示
  • 五、总结
  • 六、后记


一、问题引出与求证

今天,利用MATLAB编写乘同余法产生随机数相关代码时,遇到一个问题:
(下图仅截取部分代码片段)

a=6/256
b=6;
c=a*b

输出结果为:

lua除法保留小数 除法如何保留有效数字_存储方式


再次运算:

d=0.0234*6

发现:

lua除法保留小数 除法如何保留有效数字_MATLAB_02


二者显然不相同。但是他们似乎是用相同的数0.0234和6进行相乘。结果为什么不相同呢?为了验证哪个计算出错,我又利用计算器进行了验证,结果非常amazing啊:

lua除法保留小数 除法如何保留有效数字_matlab_03


那第一个代码为什么会算出0.1406呢?我突然想到了一个点,是不是除法运算结果没有保留全部数值呢?

一做验证,果然如此。

lua除法保留小数 除法如何保留有效数字_matlab_04


而用0.0234375*6,结果保留四位有效数字果然是0.1406。

看来果然如此,MATLAB默认保留四位有效数字,其余位数省略,但是不消失。

比如:

a=6/256
b=0.0234
a==b

结果显示,果然a和b并不相等:

lua除法保留小数 除法如何保留有效数字_存储方式_05

二、问题查阅与解决

经过大量资料查阅,只在这里找到部分答案:

lua除法保留小数 除法如何保留有效数字_存储方式_06

“若为实数,则以保留小数点后4位的浮点型表示”

经过再次从网上查阅资料,发现可以修改结果保留的有效数字,详细步骤如三:

三、MATLAB如何修改计算结果保留的有效数字

Step1:主页–>预设

lua除法保留小数 除法如何保留有效数字_有效数字_07

Step2:打开“命令行窗口”,找到“文本显示”

lua除法保留小数 除法如何保留有效数字_matlab_08


Step3:修改数值格式与数值显示

关于数值格式,共有12种,详见下表格:

lua除法保留小数 除法如何保留有效数字_MATLAB_09


显示格式只影响数值的显示方式,不影响它们在 MATLAB 中的存储方式。

参考自:MATLAB官方文档

当然,也可以使用format方法,链接如下:
https://ww2.mathworks.cn/help/matlab/ref/format.html?s_tid=srchtitle

四、拓展——数值显示

数值显示有两个选项:

  • loose(默认)
    默认情况下,MATLAB 会在命令行窗口输出中显示空行。如:
  • lua除法保留小数 除法如何保留有效数字_lua除法保留小数_10

  • compact
    compact可以取消显示空行。如:
  • lua除法保留小数 除法如何保留有效数字_matlab_11

  • 参考自:设置输出格式

五、总结

MATLAB中小数格式,默认以保留小数点后4位的浮点型表示,也可以进行手动设置;
显示格式只影响数值的显示方式,不影响它们在 MATLAB 中的存储方式。

六、后记

如果各位有什么更容易的解决办法,欢迎在评论中给出,感激不尽~