帮忙看下,这个matlab的错误怎么回事? 5
202.2-0.1*2022结果显示为-2.8422e-014这是怎么回事?????怎样才能使结果正确?...
202.2-0.1*2022
结果显示为
-2.8422e-014
这是怎么回事?????怎样才能使结果正确? 展开
结果显示为
-2.8422e-014
这是怎么回事?????怎样才能使结果正确? 展开
2个回答
展开全部
你好,这是因为浮点数的原因。
一般来说,计算机在内部运算时,是用二进制参与运算的,而表示浮点数时会产生误差,特别是表示小数时不能精确。
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 作为判断的条件。
满意请采纳!
一般来说,计算机在内部运算时,是用二进制参与运算的,而表示浮点数时会产生误差,特别是表示小数时不能精确。
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 作为判断的条件。
满意请采纳!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询