Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
回复
 
主题工具 显示模式
旧 2008-12-14, 05:44   #1
cleverliu
初级会员
 
注册日期: 2008-11-13
年龄: 44
帖子: 4
声望力: 0
cleverliu 正向着好的方向发展
默认 [求助]简单的程序,诡异的结果。请高手们看一下。

deadrate=0.90
for i=1:2
if (deadrate==0.9500)||(deadrate==0.9)
deadrate = deadrate+0.0500
else
deadrate = deadrate+0.1
end
end
正确结果应该是1,但是程序运行的结果是1.05。很奇怪,不知道为什么??
cleverliu 当前离线   回复时引用此帖
旧 2008-12-14, 09:37   #2
mathjiang
高级会员
 
注册日期: 2008-01-02
帖子: 247
声望力: 22
mathjiang 正向着好的方向发展
默认 回复: [求助]简单的程序,诡异的结果。请高手们看一下。

的确奇怪,除了误差这个原因外没别法解释。
mathjiang 当前离线   回复时引用此帖
旧 2008-12-14, 13:10   #3
debateshang
初级会员
 
注册日期: 2008-11-30
年龄: 40
帖子: 20
声望力: 17
debateshang 正向着好的方向发展
默认 回复: [求助]简单的程序,诡异的结果。请高手们看一下。

引用:
作者: cleverliu 查看帖子
deadrate=0.90
for i=1:2
if (deadrate==0.9500)||(deadrate==0.9)
deadrate = deadrate+0.0500
else
deadrate = deadrate+0.1
end
end
正确...
你这个不是循环两次吗,第一次的时候 deadrate已经是0.95了所以在进行判断的时候执行else命令
那不是0.95+0.1么正好是1.05呀;
如果你把i=1:100最后结果还是10.8500呢,这不是什么误差的问题,只是你的程序你没有完全明白
debateshang 当前离线   回复时引用此帖
旧 2008-12-17, 14:44   #4
zhoumath
初级会员
 
注册日期: 2008-12-17
年龄: 43
帖子: 2
声望力: 0
zhoumath 正向着好的方向发展
默认 回复: [求助]简单的程序,诡异的结果。请高手们看一下。

我感觉也应该是1.0啊,虽然第一次循环的结果是0.9500,当时第二次循环时间仍然满足if的条件啊!为什么运行的是else语句呢?
zhoumath 当前离线   回复时引用此帖
旧 2008-12-17, 23:24   #5
feilove
初级会员
 
注册日期: 2008-11-26
年龄: 39
帖子: 4
声望力: 0
feilove 正向着好的方向发展
默认 回复: [求助]简单的程序,诡异的结果。请高手们看一下。

为什么正确结果是1呢???
应该是1.05啊。0.05>eps
所以应该是0.9+0.05+0.1啊
feilove 当前离线   回复时引用此帖
旧 2008-12-18, 18:51   #6
lwym126
初级会员
 
注册日期: 2008-05-31
年龄: 40
帖子: 12
声望力: 17
lwym126 正向着好的方向发展
默认 回复: [求助]简单的程序,诡异的结果。请高手们看一下。

应该是0.05这个数据在问题
lwym126 当前离线   回复时引用此帖
旧 2008-12-20, 00:12   #7
remnant
普通会员
 
注册日期: 2008-04-12
年龄: 46
帖子: 67
声望力: 19
remnant 正向着好的方向发展
默认 回复: [求助]简单的程序,诡异的结果。请高手们看一下。

三楼正解。for语句循环两次,第一次进入if,第二次进入else.最后是1.05.如果lz要达到期望结果,需要break for循环。
remnant 当前离线   回复时引用此帖
旧 2009-01-02, 17:47   #8
mathjiang
高级会员
 
注册日期: 2008-01-02
帖子: 247
声望力: 22
mathjiang 正向着好的方向发展
默认 回复: [求助]简单的程序,诡异的结果。请高手们看一下。

关键是第二次为什么进入else?
这个没有人说明白了。
mathjiang 当前离线   回复时引用此帖
旧 2009-01-02, 17:48   #9
mathjiang
高级会员
 
注册日期: 2008-01-02
帖子: 247
声望力: 22
mathjiang 正向着好的方向发展
默认 回复: [求助]简单的程序,诡异的结果。请高手们看一下。

进入else的唯一原因就是matlab计算误差问题。
mathjiang 当前离线   回复时引用此帖
旧 2009-01-02, 22:35   #10
lingyun422
初级会员
 
注册日期: 2008-07-11
年龄: 40
帖子: 7
声望力: 0
lingyun422 正向着好的方向发展
默认 回复: [求助]简单的程序,诡异的结果。请高手们看一下。

自问没有明白为什么第二次判断时条件式为什么为假了?
lingyun422 当前离线   回复时引用此帖
回复

主题工具
显示模式

发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码


相似的主题
主题 主题作者 版面 回复 最后发表
[求助]关于matlab与c#编程的问题!高手指点! neu_cnlj MATLAB论坛 2 2010-05-10 09:46
帮忙看一下这三两行程序 smart55427 MATLAB论坛 1 2008-12-18 23:23
[求助]bp神经网络(急) sosnyf621 MATLAB论坛 0 2008-12-03 16:21
GM(1,1) lvlianggan MATLAB论坛 2 2008-11-07 22:52
【求助】这个微分方程怎么写成函数文件呢? grasszhang MATLAB论坛 0 2007-08-30 15:25


所有时间均为北京时间。现在的时间是 18:07


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.