| Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) | 
![]()  | 
	
| 		
			
			 | 
		#1 | 
| 
			
			 初级会员 
			
			
			
			注册日期: 2008-11-13 
				
				年龄: 45 
				
					帖子: 4
				 
				
				
				声望力: 0 ![]()  | 
	
	
	
		
		
			
			 
			
			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。很奇怪,不知道为什么??  | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
| 		
			
			 | 
		#2 | 
| 
			
			 高级会员 
			
			
			
			注册日期: 2008-01-02 
				
				
				
					帖子: 247
				 
				
				
				声望力: 22 ![]()  | 
	
	
	
		
		
			
			 
			
			的确奇怪,除了误差这个原因外没别法解释。
		 
		
		
		
		
		
		
		
	 | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
| 		
			
			 | 
		#3 | 
| 
			
			 初级会员 
			
			
			
			注册日期: 2008-11-30 
				
				年龄: 41 
				
					帖子: 20
				 
				
				
				声望力: 17 ![]()  | 
	
	
	
		
		
			
			 | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
| 		
			
			 | 
		#4 | 
| 
			
			 初级会员 
			
			
			
			注册日期: 2008-12-17 
				
				年龄: 44 
				
					帖子: 2
				 
				
				
				声望力: 0 ![]()  | 
	
	
	
		
		
			
			 
			
			我感觉也应该是1.0啊,虽然第一次循环的结果是0.9500,当时第二次循环时间仍然满足if的条件啊!为什么运行的是else语句呢?
		 
		
		
		
		
		
		
		
	 | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
| 		
			
			 | 
		#5 | 
| 
			
			 初级会员 
			
			
			
			注册日期: 2008-11-26 
				
				年龄: 40 
				
					帖子: 4
				 
				
				
				声望力: 0 ![]()  | 
	
	
	
		
		
			
			 
			
			为什么正确结果是1呢??? 
		
		
		
		
		
		
		
	应该是1.05啊。0.05>eps 所以应该是0.9+0.05+0.1啊  | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
| 		
			
			 | 
		#6 | 
| 
			
			 初级会员 
			
			
			
			注册日期: 2008-05-31 
				
				年龄: 40 
				
					帖子: 12
				 
				
				
				声望力: 18 ![]()  | 
	
	
	
		
		
			
			 
			
			应该是0.05这个数据在问题
		 
		
		
		
		
		
		
		
	 | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
| 		
			
			 | 
		#7 | 
| 
			
			 普通会员 
			
			
			
			注册日期: 2008-04-12 
				
				年龄: 46 
				
					帖子: 67
				 
				
				
				声望力: 19 ![]()  | 
	
	
	
		
		
			
			 
			
			三楼正解。for语句循环两次,第一次进入if,第二次进入else.最后是1.05.如果lz要达到期望结果,需要break for循环。
		 
		
		
		
		
		
		
		
	 | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
| 		
			
			 | 
		#8 | 
| 
			
			 高级会员 
			
			
			
			注册日期: 2008-01-02 
				
				
				
					帖子: 247
				 
				
				
				声望力: 22 ![]()  | 
	
	
	
		
		
			
			 
			
			关键是第二次为什么进入else? 
		
		
		
		
		
		
		
	这个没有人说明白了。  | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
| 		
			
			 | 
		#9 | 
| 
			
			 高级会员 
			
			
			
			注册日期: 2008-01-02 
				
				
				
					帖子: 247
				 
				
				
				声望力: 22 ![]()  | 
	
	
	
		
		
			
			 
			
			进入else的唯一原因就是matlab计算误差问题。
		 
		
		
		
		
		
		
		
	 | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
| 		
			
			 | 
		#10 | 
| 
			
			 初级会员 
			
			
			
			注册日期: 2008-07-11 
				
				年龄: 40 
				
					帖子: 7
				 
				
				
				声望力: 0 ![]()  | 
	
	
	
		
		
			
			 
			
			自问没有明白为什么第二次判断时条件式为什么为假了?
		 
		
		
		
		
		
		
		
	 | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
![]()  | 
	
	
		
| 主题工具 | |
| 显示模式 | |
		
  | 
	
		 | 
			 
			相似的主题
		 | 
	||||
| 主题 | 主题作者 | 版面 | 回复 | 最后发表 | 
| [求助]关于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 |