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