楼主: ofzhengyi
6730 11

0.9==(1.1-0.2)的结果是FALSE? [推广有奖]

  • 3关注
  • 15粉丝

教授

67%

还不是VIP/贵宾

-

威望
0
论坛币
6979 个
通用积分
11.2420
学术水平
34 点
热心指数
47 点
信用等级
26 点
经验
53224 点
帖子
924
精华
0
在线时间
2185 小时
注册时间
2010-1-11
最后登录
2024-4-20

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
有没有高手知道:为什么0.9 == (1 - 0.1)是TRUE而0.9 == (1.1 - 0.2)是FALSE?
(R 2.10.1 WindowXP SP3 )
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:LSE Window wind Dow IND 结果 false

回帖推荐

kobe4a 发表于12楼  查看完整内容

可是如果你试一下,identical(0.9,1.1-0.2),依然是false,我同意十楼的观点,这应该是由于计算机二进制表示的舍入问题

旗木卡卡西 发表于11楼  查看完整内容

教你一招,以后碰到这种比较,假设你想比较a==b,选一个最小的tolerance,比如1e-10 写成这个表达式 abs(a-b) < (1e-10) 上例是 ERROR = 1e-10 abs( 0.9 - (1.1-0.2) ) < ERROR ERROR可以随意修改,满足你的最小误差即可!

颜佳 发表于10楼  查看完整内容

这个问题我觉得是计算机的舍入误差(roundoff error),因为0.1在计算机中不能精确表示,所以1.1和0.9其实在计算机中都已经有了一定的偏差。

shenyu2070 发表于8楼  查看完整内容

1.1-0.2被R默认为是字符串格式,如果你改为 "0.9"==(1.1-0.2),结果就是TURE了! 楼主试一试。主要还是数据结构的差异。 R对数据结构是很重视的!

本帖被以下文库推荐

士不可不弘毅,任重而道远。
沙发
lance0108 发表于 2010-8-27 02:36:31 |只看作者 |坛友微信交流群
很神奇...........

使用道具

藤椅
trier2006 发表于 2010-8-27 09:16:30 |只看作者 |坛友微信交流群
1# ofzhengyi

"R for Beginners"里的例子,我也看到了,也没明白为什么。已经mail给mail list了,呵呵。
已有 1 人评分热心指数 收起 理由
ofzhengyi + 1 根据规定进行奖励

总评分: 热心指数 + 1   查看全部评分

最好的医生是自己,最好的药物是时间……

使用道具

板凳
yuejiao 在职认证  发表于 2010-8-27 11:48:39 |只看作者 |坛友微信交流群
这个基本是数据类型的问题。
已有 1 人评分热心指数 收起 理由
ofzhengyi + 1 根据规定进行奖励

总评分: 热心指数 + 1   查看全部评分

使用道具

报纸
ofzhengyi 发表于 2010-8-27 17:10:25 |只看作者 |坛友微信交流群
3# trier2006
R的帮助里也有类似的表述,但也没看懂为什么。
士不可不弘毅,任重而道远。

使用道具

地板
pandahc 发表于 2010-9-2 06:33:08 |只看作者 |坛友微信交流群
试了下,(1.1-0.2)-0.9 等于很接近0,但不等于0.

使用道具

7
trier2006 发表于 2010-9-2 09:51:12 |只看作者 |坛友微信交流群
6# pandahc

嗯,浮点运算的问题
最好的医生是自己,最好的药物是时间……

使用道具

8
shenyu2070 在职认证  发表于 2010-9-8 00:29:17 |只看作者 |坛友微信交流群
1.1-0.2被R默认为是字符串格式,如果你改为 "0.9"==(1.1-0.2),结果就是TURE了!
楼主试一试。主要还是数据结构的差异。
R对数据结构是很重视的!
已有 1 人评分热心指数 收起 理由
eijuhz + 1 热心回帖

总评分: 热心指数 + 1   查看全部评分

使用道具

9
qoiqpwqr 发表于 2010-9-8 10:07:18 |只看作者 |坛友微信交流群
这个很神奇,平时还是要小心点。

使用道具

10
颜佳 发表于 2010-9-9 13:09:34 |只看作者 |坛友微信交流群
这个问题我觉得是计算机的舍入误差(roundoff error),因为0.1在计算机中不能精确表示,所以1.1和0.9其实在计算机中都已经有了一定的偏差。
已有 1 人评分学术水平 热心指数 收起 理由
ofzhengyi + 1 + 1 根据规定进行奖励

总评分: 学术水平 + 1  热心指数 + 1   查看全部评分

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-26 20:37