# Re: st: Problem with replace if - test condition works only for some values of test variable

 From Philip Ryan To statalist@hsphsun2.harvard.edu Subject Re: st: Problem with replace if - test condition works only for some values of test variable Date Fri, 24 Oct 2008 09:24:07 +1030

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.

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

. replace y=1 if x==.51

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