帮忙看下,这个matlab的错误怎么回事? 5

202.2-0.1*2022结果显示为-2.8422e-014这是怎么回事?????怎样才能使结果正确?... 202.2-0.1*2022
结果显示为
-2.8422e-014
这是怎么回事?????怎样才能使结果正确?
展开
 我来答
浅澜77
2013-04-29 · TA获得超过1598个赞
知道小有建树答主
回答量:681
采纳率:50%
帮助的人:159万
展开全部
你好,这是因为浮点数的原因。
一般来说,计算机在内部运算时,是用二进制参与运算的,而表示浮点数时会产生误差,特别是表示小数时不能精确。
0.1化为二进制如下:0.1(十进制) = 0.0001100110011001(二进制),
反过来转换如下:0.0001100110011001(二进制) = 0.0999908447265625(十进制),可以看出是不相等的。
所以表示0.1和2022时都有误差,相乘后误差会更大一些,所以就不等于202.2了,但相差还是很小的。
要使结果正确,通常的做法是设定一个误差限,如1e-5等。在matlab里面有规定误差限eps,在跟零判断时可以选择是否在误差限之内,如 202.2-0.1*2022-1e-5 == eps 作为判断的条件。

满意请采纳!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
夜菲担子1T
2013-04-29
知道答主
回答量:7
采纳率:0%
帮助的人:3.2万
展开全部

round off错误,修正误差 参考下面截图

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式