Statalist


[Date Prev][Date Next][Thread Prev][Thread Next][Date index][Thread index]

Re: st: RE: Difference between codebook and count


From   David Kantor <[email protected]>
To   [email protected]
Subject   Re: st: RE: Difference between codebook and count
Date   Fri, 13 Jul 2007 06:58:58 -0400

At 05:54 AM 7/13/2007, Maarten Buis wrote:
--- Carlo Lazzaro wrote:
> I have experienced the following problem (please, see details below) with .2
> value, which is reported with codebook but seemingly ignored with count.
> . codebook dosea1
> ----------------------------------------------------------------------------
> dosea1
> (unlabeled)
> ----------------------------------------------------------------------------
> type: numeric (float)
>
> range: [.2,1] units: .1
<snip>
>
>. count if dosea1==.2
> 0

This is a due to the fact that computers and Stata count in base-2 and we count
in base-10 numbers. The number .2 (base-10) cannot be held exactly in base-2.
[...]
You then gave an example using -round-.

But the important issue is that calculations are done in double, while the storage type of dosea1 is float. That is, in -count if dosea1==.2-, the .2 is evaluated as a double, and is compared to dosea1, which is a float. If you had generated and stored dosea1 as double, then the apparent paradox would not occur. But storing such numbers as double is usually not necessary and can waste space. Given that is is a float, the appropriated test is...
count if dosea1 == float(.2)

See -help float-.

hth
--David

*
* For searches and help try:
* http://www.stata.com/support/faqs/res/findit.html
* http://www.stata.com/support/statalist/faq
* http://www.ats.ucla.edu/stat/stata/




© Copyright 1996–2024 StataCorp LLC   |   Terms of use   |   Privacy   |   Contact us   |   What's new   |   Site index