From teck.lim at imperial.ac.uk  Tue May 30 14:41:49 2006
From: teck.lim at imperial.ac.uk (ltp)
Date: Tue, 30 May 2006 13:41:49 +0100
Subject: [Rd] Numerical error in R (win32) (PR#8909)
In-Reply-To: <x2k684ojy2.fsf@turmalin.kubism.ku.dk>
Message-ID: <002c01c683e6$6bfc6e60$f9bec69b@ltpfujitsu>

Hi

	Thanks for the quick reply. However, I am not satisfied, as
> round(3.15000000, 1)
[1] 3.1
> round(3.75000000, 1)
[1] 3.8

	I think the problem is really more of an error in the rounding off
algorithm than finite precision.

Thanks
Teckpor

-----Original Message-----
From: pd at pubhealth.ku.dk [mailto:pd at pubhealth.ku.dk] On Behalf Of Peter
Dalgaard
Sent: Monday, May 29, 2006 17:49
To: teck.lim at imperial.ac.uk
Cc: r-devel at stat.math.ethz.ch; R-bugs at biostat.ku.dk
Subject: Re: [Rd] Numerical error in R (win32) (PR#8909)

teck.lim at imperial.ac.uk writes:

> Hi
>     I had observed the following problem in R (also C, Matlab, and
Python).
> sprintf('%1.2g\n', 3.15)
> give 3.1 instead of 3.2 whereas an input of 3.75 gives 3.8.
> Java's System.out.printf is ok though.  
>  
> > round(3.75,1)
> [1] 3.8
> > round(3.15,1)
> [1] 3.1
>  
> Similar outcome with sprintf in R.
> 
> 
> However, the right answer should be 3.2

According to what? Remember that we're dealing with finite precision binary
arithmetic here:

>  (3.15 - 3.1)<.05
[1] TRUE
>  abs(3.15 - 3.2)>.05
[1] TRUE

See also FAQ 7.31.
  
> Regards
> Teckpor
> 

-- 
   O__  ---- Peter Dalgaard             ?ster Farimagsgade 5, Entr.B
  c/ /'_ --- Dept. of Biostatistics     PO Box 2099, 1014 Cph. K
 (*) \(*) -- University of Copenhagen   Denmark          Ph:  (+45) 35327918
~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk)                  FAX: (+45) 35327907



[Rd] Numerical error in R (win32) (PR#8909)
ltp