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: Why does "di round(85*0.7)" equal 59, rather not 60 ?
From
Maarten buis <[email protected]>
To
[email protected]
Subject
Re: st: Why does "di round(85*0.7)" equal 59, rather not 60 ?
Date
Sun, 16 Jan 2011 13:10:15 +0000 (GMT)
--- On Sun, 16/1/11, Grace Jessie wrote:
> Why does "di round(85*0.7)" equal 59 , rather not 60?
> It is as following.
>
>
> . di round(85*0.7)
> 59
> . di 85*0.7
> 59.5
> . di round(59.5)
> 60
That is a precision problem. You may think that 0.7 is a
number which can be exactly represented with one number
behind the decimal point, but that is only because we think
in the decimal system. Computers, and thus also Stata, think
in binary, and the number 7/10 in binary is like the number
1/3 in decimal.
You can work around it by trying to work as much as possible
with integers. Compare:
di %20.15f (85*7)/10
with
di %20.15f 85*.7
Hope this helps,
Maarten
--------------------------
Maarten L. Buis
Institut fuer Soziologie
Universitaet Tuebingen
Wilhelmstrasse 36
72074 Tuebingen
Germany
http://www.maartenbuis.nl
--------------------------
*
* 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/