Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: st: The accuracy of the float data type
From
Sergiy Radyakin <[email protected]>
To
"[email protected]" <[email protected]>
Subject
Re: st: The accuracy of the float data type
Date
Fri, 24 Jan 2014 11:31:05 -0500
Zhang, avoid comparing floating point numbers for equality. Instead
there is a system variable c(epsfloat) , which you can refer to when
you need to deal with precision:
clear
input float sales
25.395
32.007
end
list
display c(epsfloat)
list if sales==25.395
list if abs(sales-25.395)<=10*c(epsfloat)
list if sales==32.007
list if abs(sales-32.007)<=10*c(epsfloat)
Best, Sergiy Radyakin
On Fri, Jan 24, 2014 at 11:23 AM, Maarten Buis <[email protected]> wrote:
> I would do this differently:
>
> *------------------ begin example ------------------
> // get some example data
> sysuse auto
>
> // create a variable denoting missing values
> gen byte miss = missing(rep78, price)
>
> // create our indicator variable
> bys rep78 miss (price) : gen max = _n == _N if !miss
>
> // admire the result
> list rep78 miss price max in 1/12, sepby(rep78)
> *------------------- end example -------------------
> * (For more on examples I sent to the Statalist see:
> * http://www.maartenbuis.nl/example_faq )
>
> Hope this helps,
> Maarten
>
>
> On Fri, Jan 24, 2014 at 4:53 PM, R Zhang <[email protected]> wrote:
>> Dear Statalist,
>>
>> my data structure is as follows
>>
>> firmID segmentID sales year
>> 1001 1 25.395 1990
>> 1001 1 32.007 1991
>>
>> ............
>>
>> a firm can operate in multiple segments as identified by segmentID .
>> I wanted to identify the largest segment by sales,so I used
>>
>> bysort firmID year : egen maxsale=max(sales)
>>
>> then I did
>> gen PriSIC=0
>> replace PriSIC=1 if sales=maxsale
>>
>> I got
>> firmID segmentID sales year maxsale prisic
>> 1001 1 25.395 1990 25.395 0
>> 1001 1 32.007 1991 32.007 0
>>
>> I could not figure out why prisic is 0, so I compute the diffderence
>> (sales-maxsale), it shows a very small negative number , and the data
>> dictionary shows sales format float %12.0g, and maxsale format float
>> %9.0g
>>
>> what should I do to correct this?
>>
>> thanks!!!
>>
>> Rochelle
>> *
>> * For searches and help try:
>> * http://www.stata.com/help.cgi?search
>> * http://www.stata.com/support/faqs/resources/statalist-faq/
>> * http://www.ats.ucla.edu/stat/stata/
>
>
>
> --
> ---------------------------------
> Maarten L. Buis
> WZB
> Reichpietschufer 50
> 10785 Berlin
> Germany
>
> http://www.maartenbuis.nl
> ---------------------------------
> *
> * For searches and help try:
> * http://www.stata.com/help.cgi?search
> * http://www.stata.com/support/faqs/resources/statalist-faq/
> * http://www.ats.ucla.edu/stat/stata/
*
* For searches and help try:
* http://www.stata.com/help.cgi?search
* http://www.stata.com/support/faqs/resources/statalist-faq/
* http://www.ats.ucla.edu/stat/stata/