Alas, it appears that float does _not_ provide sufficient precision
for your task. To say that "if the test can
recognize .25 it should be able to recognize .26" is
anthropomorphising a piece of silicon (and its binary instruction
set) and it just doesn't work. I know, I try it regularly, and I never win.
Have a look at the FAQs on problems with precision and remedies
(-findit precision-)
Phil
At 09:02 AM 24/10/2008, you wrote:
Please, indulge me. I'm sure I've overlooked something basic, but
replace if is working only for certain values of the test variable and
not for others.
Start with any dataset open
Here is the code fragment that replicates my problem:
ge y=.
generate x= (_n/100)-0.01 in 1/101
replace y=1 if x==0
replace y=1 if x==.01
replace y=1 if x==.25
replace y=1 if x==.26
replace y=1 if x==.5
replace y=1 if x==.51
replace y=1 if x==.75
replace y=1 if x==.76
replace y=1 if x==1
replace y=1 if x==.99
I'm able to make assignments to y only when x equals 0, .25, .5, .75,
and 1 but for no other value. This is the output I get:
. replace y=1 if x==.5
(1 real change made)
. replace y=1 if x==.51
(0 real changes made)
Why does this happen and how do I fix it? x is a float, so it should
have enough precision for the test condition. And if the test can
recognize .25 it should be able to recognize .26.
Thanks
N
*
* For searches and help try:
* http://www.stata.com/help.cgi?search
* http://www.stata.com/support/statalist/faq
* http://www.ats.ucla.edu/stat/stata/
Philip Ryan
Professor,
Discipline of Public Health
Director, Data Management & Analysis Centre
University of Adelaide
*
* For searches and help try:
* http://www.stata.com/help.cgi?search
* http://www.stata.com/support/statalist/faq
* http://www.ats.ucla.edu/stat/stata/