Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
回复
 
主题工具 显示模式
旧 2011-12-14, 13:48   #1
ddlovedz
初级会员
 
ddlovedz 的头像
 
注册日期: 2011-12-14
帖子: 1
声望力: 0
ddlovedz 正向着好的方向发展
默认 回复: 0.3+0.15-0.45为什么不等于0!!

>> x=1/3

x =

0.3333

>> y=x*3

y =

1

>> t=3*x

t =

1
为什么这里并不是引用网址中说的那样,我得到的是1。以上代码和0.3+0.15-0.45的区别在哪里?
ddlovedz 当前离线   回复时引用此帖
旧 2011-12-20, 09:58   #2
六级阿森
初级会员
 
六级阿森 的头像
 
注册日期: 2011-12-13
年龄: 37
帖子: 5
声望力: 0
六级阿森 正向着好的方向发展
默认 回复: 0.3+0.15-0.45为什么不等于0!!

链接上所说1/3的例子是指用手算,matlab中将3*0.333近似为1,是否因为误差太小,这个问题还有待继续研究。 至于将1/3的例子和本帖的问题联系起来的原因是,分数-小数,十进制-二进制 在这两种转换过程中都会出现偏差。表面上这样理解即可。 但是如果在matlab中存储1/3,这个过程便更复杂,因为上述的两个过程会同时出现,至于先后顺序,我的理解是,先将1和3转换为2进制再进行除法计算。如果按此顺序理解,那么0.3/0.15会出现更大的偏差,因为0.3和0.15都无法再2进制中准确描述,但是matlab中运行结果为精确的2,这个结论便把我对于顺序的推测推翻了。 至于这个问题的最终解答,链接中提供的文献应该有所涉及。共勉。
六级阿森 当前离线   回复时引用此帖
旧 2011-12-20, 21:04   #3
renf
初级会员
 
注册日期: 2011-09-14
年龄: 47
帖子: 8
声望力: 0
renf 正向着好的方向发展
酷 回复: 0.3+0.15-0.45为什么不等于0!!

以后做a==b的判断时要特别小心了
renf 当前离线   回复时引用此帖
回复

主题工具
显示模式

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

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



所有时间均为北京时间。现在的时间是 19:36


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