![]() |
[求助]简单的程序,诡异的结果。请高手们看一下。
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。很奇怪,不知道为什么?? |
回复: [求助]简单的程序,诡异的结果。请高手们看一下。
的确奇怪,除了误差这个原因外没别法解释。
|
回复: [求助]简单的程序,诡异的结果。请高手们看一下。
[QUOTE=cleverliu;21978]deadrate=0.90
for i=1:2 if (deadrate==0.9500)||(deadrate==0.9) deadrate = deadrate+0.0500 else [COLOR="Magenta"]deadrate = deadrate+0.1[/COLOR] end end 正确...[/QUOTE] 你这个不是循环两次吗,第一次的时候 deadrate已经是0.95了所以在进行判断的时候执行else命令 那不是0.95+0.1么正好是1.05呀; 如果你把i=1:100最后结果还是10.8500呢,这不是什么误差的问题,只是你的程序你没有完全明白 |
回复: [求助]简单的程序,诡异的结果。请高手们看一下。
我感觉也应该是1.0啊,虽然第一次循环的结果是0.9500,当时第二次循环时间仍然满足if的条件啊!为什么运行的是else语句呢?
|
回复: [求助]简单的程序,诡异的结果。请高手们看一下。
为什么正确结果是1呢???
应该是1.05啊。0.05>eps 所以应该是0.9+0.05+0.1啊 |
回复: [求助]简单的程序,诡异的结果。请高手们看一下。
应该是0.05这个数据在问题
|
回复: [求助]简单的程序,诡异的结果。请高手们看一下。
三楼正解。for语句循环两次,第一次进入if,第二次进入else.最后是1.05.如果lz要达到期望结果,需要break for循环。
|
回复: [求助]简单的程序,诡异的结果。请高手们看一下。
关键是第二次为什么进入else?
这个没有人说明白了。 |
回复: [求助]简单的程序,诡异的结果。请高手们看一下。
进入else的唯一原因就是matlab计算误差问题。
|
回复: [求助]简单的程序,诡异的结果。请高手们看一下。
自问没有明白为什么第二次判断时条件式为什么为假了?
|
所有时间均为北京时间。现在的时间是 05:21。 |
Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.