Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.

# 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/
```