中易网

在MATLAB里编写m程序使用if判断语句时,逻辑判断始终出现问题。望请大侠帮助

答案:1  悬赏:0  
解决时间 2021-03-23 19:52
close all
clc
clear
d1=(0.0870-0.0850);
if (d1==0.0020)
d2=d1;
else
d2=0;
end
举例程序如上,按道理d1=0.0020,应该执行d2=d1;
但在程序调试时发现,尽管d1=0.0020但仍不满足if里的判断语句,会直接跳到else,然后在跳出;

可是如果将if的判断语句改为如下
if (d1<=0.0020)
在执行时,程序就能正常执行d2=d1;语句。

不知道为何出现这种情况,望请各位大侠能够指点一下.谢谢!
最佳答案
最好写成if abs(d1-0.0020)
电脑存储数据都会截断的(就是说不会存无穷多位,而是二进制里存了前面几十位后,后面的就不存了),所以对于浮点数有些不太大的误差都是正常的,要比较浮点数的话,不能太精确,所以最好是范围比。要比较整数,是可以精确的,因为整数的二进制表示都是有限多位。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
请问,在iphone上添加sina邮箱账户,在收件服
梦到男朋友被车撞了,我的头也刮到一点出血了
毕业论文《企业内部控制的现状与解决措施》前
有大神知道内地都是怎样做海南清补凉的吗?
有些洗头水洗过几次后头发、很油很粘粘.特别
上海大妈为宠物狗办风光葬礼 四人抬棺僧人超
我想了解一下灵宝苹果
酒糟水可以养猪吗??
17k有哪些神级作家?
kindle voyage支持epub吗
漳州港这边装修一栋3层的楼房,一层80平方普
谁有启东黄冈作业本三年级下册听力mp3
柑橘树芽虫如何防冶
加盟香港酷林鸟内衣实体店多少钱?
多彩家教中心地址在什么地方,我要处理点事
推荐资讯
如何防治肠息肉
最近腰痛并且晚上还起夜,是不是肾不好
孩子老是反复咳嗽怎么回事?
我喜欢一个女孩 她只有15岁 我应该怎样追求
宁波iphone4全国售后服务站在哪里?
有什么产品可以全身美白的
郑州床上用品批发市场外迁搬到哪里?
神话传说1.51 中血凤凰之心怎么得的
天津爱华保育院如何收费?
制作酸奶的过程~
租赁商铺合同届满纠纷
17岁步入社会当西点学徒以后能不能考证的呢
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?