- 一、问题引出与求证
- 二、问题查阅与解决
- 三、MATLAB如何修改计算结果保留的有效数字
- 四、拓展——数值显示
- 五、总结
- 六、后记
今天,利用MATLAB编写乘同余法产生随机数相关代码时,遇到一个问题: (下图仅截取部分代码片段)
a=6/256
b=6;
c=a*b
输出结果为: 再次运算:
d=0.0234*6
发现: 二者显然不相同。但是他们似乎是用相同的数0.0234和6进行相乘。结果为什么不相同呢?为了验证哪个计算出错,我又利用计算器进行了验证,结果非常amazing啊:
那第一个代码为什么会算出0.1406呢?我突然想到了一个点,是不是除法运算结果没有保留全部数值呢? 一做验证,果然如此。
而用0.0234375*6,结果保留四位有效数字果然是0.1406。
看来果然如此,MATLAB默认保留四位有效数字,其余位数省略,但是不消失。
比如:
a=6/256
b=0.0234
a==b
结果显示,果然a和b并不相等:
经过大量资料查阅,只在这里找到部分答案:
“若为实数,则以保留小数点后4位的浮点型表示”
经过再次从网上查阅资料,发现可以修改结果保留的有效数字,详细步骤如三:
三、MATLAB如何修改计算结果保留的有效数字Step1:主页–>预设
Step2:打开“命令行窗口”,找到“文本显示” Step3:修改数值格式与数值显示 关于数值格式,共有12种,详见下表格:
显示格式只影响数值的显示方式,不影响它们在 MATLAB 中的存储方式。
参考自:MATLAB官方文档
当然,也可以使用format方法,链接如下: https://ww2.mathworks.cn/help/matlab/ref/format.html?s_tid=srchtitle
四、拓展——数值显示数值显示有两个选项:
-
loose(默认) 默认情况下,MATLAB 会在命令行窗口输出中显示空行。如:
-
compact compact可以取消显示空行。如:
参考自:设置输出格式
MATLAB中小数格式,默认以保留小数点后4位的浮点型表示,也可以进行手动设置; 显示格式只影响数值的显示方式,不影响它们在 MATLAB 中的存储方式。
六、后记如果各位有什么更容易的解决办法,欢迎在评论中给出,感激不尽~