matlab 计算结果显示a=1,但判断语句a==1,返回值是0,为什么会这样,又没办法令a==1的返回值是1

a=min((1/3)/(1-2/3),(2/3)/(2/3))a=1a==1ans0a<1ans1a=max((1/3)/(1-2/3),(2/3)/(2/3))a=1... a=min((1/3)/(1-2/3),(2/3)/(2/3))
a=1
a==1
ans 0
a<1
ans
1
a=max((1/3)/(1-2/3),(2/3)/(2/3))
a=1
a==1
ans
1
为什么都是a=1,但判断结果不同,又没办法令第一种情况a==1,返回值是1
展开
 我来答
sihw_ocean
推荐于2016-06-05 · TA获得超过640个赞
知道小有建树答主
回答量:280
采纳率:0%
帮助的人:349万
展开全部
问题在于程序会计算1-2/3,虽然精度很高,但和我们用分数进行的计算并不一样,min时出现的1其实是四舍五入而来的,而2/3/2/3则不存在四舍五入,所以他的结果就是1,
要让min情况下返回1,可以将2/3进行符号计算,这样就不存在四舍五入了,比如
a=min(eval((1/3)/(1-sym(2/3))),(2/3)/(2/3))
追问
感谢,还想问一下,因为这个语句是在一个循环中,是不是将初始值都化为字符计算,可以避免这种问题
追答
应该不用吧,因为a只在循环里面才开始出现,而且个人感觉能不用sym就不用sym,具体境况还得你自己定
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式