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