Re: MemberQ
- To: mathgroup at smc.vnet.net
- Subject: [mg68558] Re: [mg68503] MemberQ
- From: Igor Antonio <igora at wolf-ram.com>
- Date: Wed, 9 Aug 2006 04:20:49 -0400 (EDT)
- Organization: Wolfram Research, Inc.
- References: <200608081028.GAA29635@smc.vnet.net>
- Reply-to: igora at wolf-ram.com
- Sender: owner-wri-mathgroup at wolfram.com
Bruce Colletti wrote: > 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 I don't know what function MemberQ uses to identify if something is part of the list, but it seems to be related to the precision of the 0.7: In[8]:= MemberQ[Range[0., 1.0, 0.1], 0.7] Out[8]= False In[9]:= MemberQ[Range[0., 1.0, 0.1], 0.1] Out[9]= True In[19]:= Range[0.0, 1.0, 0.1] // InputForm Out[19]//InputForm= {0., 0.1, 0.2, 0.30000000000000004, 0.4, 0.5, 0.6000000000000001, 0.7000000000000001, 0.8, 0.9, 1.} Two alternatives: 1) use exact numbers In[14]:= MemberQ[Range[0, 1, 1/10], 7/10] Out[14]= True 2) Use a condition statement, which allows you to use the == function. Note that even == will not work in some cases, however. It will depend on the precision of the numbers involved. In[29]:= MemberQ[Range[0., 1.0, 0.1], x_ /; x == 0.7] Out[29]= True Igor -- Igor C. Antonio Wolfram Research, Inc. http://www.wolfram.com To email me personally, remove the dash.
- References:
- MemberQ
- From: Bruce Colletti <vze269bv@verizon.net>
- MemberQ