If you read the FAQ that Nick pointed you to, it would explain that a
computer (working in binary) cannot store _exactly_ a number with 1
decimal place. The number 3.1 has no exact representation in binary, in
the same way that the number 1/3 has no exact representation in decimal.
The FAQ explains how to deal with this.
David
-----Original Message-----
From: [email protected]
[mailto:[email protected]] On Behalf Of Siyam, Amani
Sent: 01 March 2006 15:39
To: [email protected]
Subject: st: RE: RE: Stored decimals
Dear Nick,
Thanks for your reply. I want to store the variable "tweight" as a
variable with only 1 decimal place.
If you consider:
gen tweight=weight/10
without any rounding or formatting, "weight" is an integer ranging from
15 to 807 therefore "tweight" will be a real ranging from 1.5 to 80.7 as
a 3-digit number with 1 decimal place.
When I save my data file after the command above, the content of
"tweight" is as the example shows:
True tweight Stata-stored tweight
3.0 3.0
3.1 3.0999999
3.2 3.2
3.3 3.3000002
3.4 3.4000001
3.5 3.5
3.6 3.5999999
3.7 3.7
3.8 3.8
3.9 3.9000001
Sorry I might be missing a minor point here but I am looking for a
command or function to generate and store "tweight" exactly as a 1
decimal place variable.
Thanks very much.
Amani
-----Original Message-----
From: [email protected]
[mailto:[email protected]] On Behalf Of Nick Cox
Sent: 01 March 2006 14:04
To: [email protected]
Subject: st: RE: Stored decimals
You shouldn't need to -round(,)-. This is a standard precision issue
(-search precision, faq-) and the presentation problem should be soluble
using -format-.
Thus we need to know in what sense that "doesn't work".
Nick
[email protected]
Siyam, Amani
> I am dealing with survey data that avails children weights in kgs (int
> %8.0g). The way the weight variable is provided is without decimal
> places as a three digit number, the last digit representing the 1st
> decimal place, that is the variable has to be divided by 10 before it
> can be used for the necessary calculations.
>
> I used the command:
>
> gen tweight=weight/10
>
> The way the variable "tweight" is stored is critical to the subsequent
> user of my programme and rather annoying because I don't understand
> where the extra decimal places are coming from. Below is an example
> of the pattern of how the 1 decimal place
>
> DHS weight True tweight Stata-stored tweight
> 30 3.0 3.0
> 31 3.1 3.0999999
> 32 3.2 3.2
> 33 3.3 3.3000002
> 34 3.4 3.4000001
> 35 3.5 3.5
> 36 3.6 3.5999999
> 37 3.7 3.7
> 38 3.8 3.8
> 39 3.9 3.9000001
>
> When you summarise the variable tweight, it neatly displays as a
> 1-decimal place variable.
>
> Variable | Obs Mean Std. Dev. Min Max
> -------------+--------------------------------------------------------
> tweight | 2686 8.617238 3.959973 1.5 80.7
>
> I tried the common formatting commands but none seem to be working:
>
> gen float tweight=weight
> repl tweight=round(tweight, 0.1)
> format tweight %9.1f
>
*
* 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/
*
* 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/
______________________________________________________________________
This email has been scanned by the MessageLabs Email Security System.
For more information please visit http://www.messagelabs.com/email
______________________________________________________________________
______________________________________________________________________
This email has been scanned by the MessageLabs Email Security System.
For more information please visit http://www.messagelabs.com/email
______________________________________________________________________
*
* 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/