Re: MemberQ
- To: mathgroup at smc.vnet.net
- Subject: [mg68530] Re: MemberQ
- From: "Norbert Marxer" <marxer at mec.li>
- Date: Wed, 9 Aug 2006 04:18:41 -0400 (EDT)
- References: <eb9pkt$t4j$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Hello As you can see if you output your list in InputForm InputForm@Range[0., 1., .1] Out[61]//InputForm= {0., 0.1, 0.2, 0.30000000000000004, 0.4, 0.5, 0.6000000000000001, 0.7000000000000001, 0.8, 0.9, 1.} the specific element does not correspond exactly to 0.7 and therefore MemberQ returns False. This has to do with the precision of real numbers. Nevertheless there are some possibilities to perform your test. Here are some of them: Use Integers: MemberQ[Range[0, 10, 1]/10, 7/10] Convert to Integers MemberQ[Round /@ (10 Range[0., 1., .1]), 7] Use Chop, Select and test for the Length: Length@Select[Range[0., 1., .1], Chop[# - 0.7] == 0 &] = 0 Use the exact same real number (throughout your calculation): r = Range[0., 1., .1]; MemberQ[r, r[[8]]] Type in your array by hand (instead of using Range) MemberQ[{0.1, 0.2, 0.7}, 0.7] etc. They all return True. Best Regards Norbert Marxer www.mec.li 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