MATLAB除法运算的精度问题及其解决方案

1. 问题描述:

今天做课题的时候,发现MATALB在执行除法运算时,如果需要的精度太高,会出现高精度部分运算出错的情况。

比如在这里我执行一个简单的除法运算:x=4.8/0.2,看一下结果:

命令行的结果看起来还不错,24.0000,就是24嘛!
在这里插入图片描述
打开变量查看器查看,就会发现,嗯?结果差了0.000000000000004。
在这里插入图片描述
有时候这一点点精度缺失确实不值得注意,但是偶尔它也会产生很多麻烦,因此还是解决一下比较好。

2. 解决方案1(roundn)

roundn(X,N) 函数的作用是将X圆整,参数N定义圆整的精度,N为正代表圆整到小数点前N位,N为负代表圆整到小数点后N位。

这并不是一个很合理的解决方案,因为圆整操作会导致数值精度的丢失,但是至少可用。

我们使用: x=roundn(4.8/0.2,-10) ,执行一下,看效果:

命令行的结果其实已经表明我们的计算结果没问题了,确实是24。
在这里插入图片描述
再打开变量查看器,发现结果确实是正确的。
在这里插入图片描述
这个方案损失了精度,所以对于精度要求高的场合,并不适用。

3. 解决方案2(除变乘)

为了不损失精度,我们可以将除法转换为乘法,经测试也可以解决。

这里我们使用式子:x=4.8*(1/0.2),看一下命令行的结果:

在这里插入图片描述

4. 有更多想法或者问题,欢迎多多交流

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值