Re: MemberQ

*To*: mathgroup at smc.vnet.net*Subject*: [mg68526] Re: MemberQ*From*: Peter Pein <petsie at dordos.net>*Date*: Wed, 9 Aug 2006 04:18:31 -0400 (EDT)*References*: <eb9pkt$t4j$1@smc.vnet.net>*Sender*: owner-wri-mathgroup at wolfram.com

Bruce Colletti schrieb: > Re Mathematica 5.2.0.0. > > Since 0.7 is in the set {0.0, 0.1, 0.2,..., 0.9, 1.0}, why does MemberQ[Range[0., 1., .1], .7] return False? > > Thankx. > > Bruce > It returns False, because 0.7 is definitely _not_ a member of In[1]:= Range[0.,1.,.1]//InputForm Out[1]//InputForm= {0., 0.1, 0.2, 0.30000000000000004, 0.4, 0.5, 0.6000000000000001, 0.7000000000000001, 0.8, 0.9, 1.} Don't expect exact results, when using inexact numbers. MemberQ[lst,elm] looks for exactly the same as elm in lst. You can write your own MemberQ using == instead of ===, because Equal[] considers "very similar" reals to be equal: In[2]:= sloppyMemberQ = Cases[#1, x_ /; x == #2, 1, 1] =!= {} & ; In[3]:= sloppyMemberQ[Range[0., 1., 0.1], 0.7] Out[3]= True Peter