LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1817|回复: 4

关于a==b和a is b

[复制链接]
发表于 2010-6-19 09:48:07 | 显示全部楼层 |阅读模式
>>> f1=4.3
>>> f2=1.3+3.0
>>> f1==f2
True
>>> f1 is f2
False

>>> f1=4
>>> f2=1+3
>>> f1==f2
True
>>> f1 is f2
True

>>> 4.3 == 1.3+3.0
True
>>> 4.3 is 1.3+3.0
False
>>> 4 is 1+3
True
发表于 2010-8-9 20:14:45 | 显示全部楼层
你想表达什么。。
回复 支持 反对

使用道具 举报

发表于 2010-9-21 14:37:36 | 显示全部楼层
is 用来测试是不是引用的同一个对象。 在python内部,对于字符串,整型,会共享内存,多个内容相同的变量会引用到同一个对象。
另外,浮点数本身是不精确的(这是由浮点数的内部表示方式决定的),通常不要判断其相等性,而是判断两个数之间的差值小于可以允许的值。
比如
  1. a = 3.333333333
  2. b = 4.444444444
  3. c = 7.777777777
  4. a + b  == c  # False
  5. a + b - c #8.881784197001252e-16
复制代码
回复 支持 反对

使用道具 举报

发表于 2010-10-14 09:22:14 | 显示全部楼层
f1和f2的值相等,但是所指的内存地址不一样,所以
f1==f2
true

f1 is f2
false

这是我的理解。
回复 支持 反对

使用道具 举报

发表于 2010-10-31 12:42:42 | 显示全部楼层
Post by jacuro;2113102
is 用来测试是不是引用的同一个对象。 在python内部,对于字符串,整型,会共享内存,多个内容相同的变量会引用到同一个对象。
另外,浮点数本身是不精确的(这是由浮点数的内部表示方式决定的),通常不要判断其相等性,而是判断两个数之间的差值小于可以允许的值。
比如

  1. a = 3.333333333
  2. b = 4.444444444
  3. c = 7.777777777
  4. a + b  == c  # False
  5. a + b - c #8.881784197001252e-16
复制代码

讨论这个似乎没有结果。请看,我这里就不同。
>>> a = 3.3333333
>>> b = 4.4444444
>>> c = 7.7777777
>>> a + b == c
True
>>> a + b -c
0.0
回复 支持 反对

使用道具 举报

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

本版积分规则

快速回复 返回顶部 返回列表