Stata The Stata listserver
[Date Prev][Date Next][Thread Prev][Thread Next][Date index][Thread index]

st: data representation


From   mochoa1@worldbank.org
To   statalist@hsphsun2.harvard.edu
Subject   st: data representation
Date   Fri, 27 Dec 2002 10:25:57 -0400

K.I. , I hope this is useful to get a solution for your problem.

Type help datatypes to get the following info:


Precision of numeric storage types

floats have about 7 digits of accuracy; the magnitude of the number does not
matter.
Thus, 1234567 can be stored perfectly as a float, as can 1234567e+20.  The
number
123456789, however, would be rounded to 123456792.  In general, this rounding
does not
matter.

If you are storing identification numbers, however, the rounding could matter.
If the
identification numbers are integers and take 9 digits or less, store them as
longs;
otherwise, store them as doubles.  doubles have 16 digits of accuracy.

Stata stores numbers in binary and this has a second effect on numbers less than
1.  1/10
has no perfect binary representation just as 1/11 has no perfect decimal
representation.
In float, .1 is stored as .10000000149011612.  Note that there are 7 digits of
accuracy,
just as with numbers larger than 1.  Stata, however, performs all calculations
in double
precision.  If you were to store 0.1 in a float called x and then ask, say,
"list if
x==.1", there would be nothing in the list.  The .1 that you just typed was
converted to
double, with 16 digits of accuracy (.100000000000000014...) and that number is
never equal
to 0.1 stored with float accuracy.

One solution is to type "list if x==float(.1)".  The float() function rounds its
argument
to float accuracy; see help functions.  The other alternative would be store
your data as
double, but this is probably a waste of memory.  Few people have data that is
accurate to
1 part in 10 to the 7th.  Among the exceptions are banks, who keep records
accurate to the
penny on amounts of billions of dollars.  If you are dealing with such financial
data,
store your dollar amounts as doubles.  See [U] 16.10 Precision and problems
therein.


Also see

 Manual:  [U] 15 Data,
          [U] 16.10 Precision and problems therein,
          [R] data types
On-line:  help for compress, encode, format, recast


My best regards,

Marcelo


*
*   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–2014 StataCorp LP   |   Terms of use   |   Privacy   |   Contact us   |   What's new   |   Site index