![]()  | 
	
		
 [求助]简单的程序,诡异的结果。请高手们看一下。 
		
		
		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计算误差问题。 
	 | 
		
 回复: [求助]简单的程序,诡异的结果。请高手们看一下。 
		
		
		自问没有明白为什么第二次判断时条件式为什么为假了? 
	 | 
| 所有时间均为北京时间。现在的时间是 13:04。 | 
	Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.