Read FAQ 7.31 (no you are not the first to notice this).

In fact this is an issue with most computer programs, not unique or original to 
R.  The FAQ has a link to a general computer science article that goes into 
great detail on this issue.

Reading that article (or something similar) should be a prerequisite to using a 
computer for anything more numerically involved than playing solitare.

-- 
Gregory (Greg) L. Snow Ph.D.
Statistical Data Center
Intermountain Healthcare
greg.s...@imail.org
801.408.8111

> -----Original Message-----
> From: r-help-boun...@r-project.org [mailto:r-help-boun...@r-
> project.org] On Behalf Of Martin Batholdy
> Sent: Wednesday, September 30, 2009 1:18 PM
> To: Duncan Murdoch
> Cc: r help
> Subject: Re: [R] Rounding error in seq(...)
> 
> hum,
> 
> can you explain that a little more detailed?
> Perhaps I miss the background knowledge - but it seems just absurd to
> me.
> 
> 0.1+0.1+0.1 is 0.3 - there is no rounding involved, is there?
> 
> why is
> x <- 0.1 + 0.1 +0.1
> not equal to
> y <- 0.3
> 
> ?
> 
> 
> 
> Am 30.09.2009 um 21:04 schrieb Duncan Murdoch:
> 
> > On 9/30/2009 2:50 PM, Michael Knudsen wrote:
> >> On Wed, Sep 30, 2009 at 8:44 PM, Duncan Murdoch
> >> <murd...@stats.uwo.ca> wrote:
> >>> Why?  You asked for an increment of 1 in the second case (which is
> >>> exactly
> >>> represented in R), then divided by 10, so you'll get the same as
> >>> 0.3 gives
> >>> you.  In the seq() case you asked for an increment of a number
> >>> close to but
> >>> not equal to 1/10 (because 1/10 is not exactly representable in
> >>> R), so you
> >>> got something different.
> >> Well, the problem is that I don't know how seq is implemented. I
> just
> >> assumed that it wouldn't behave like this.
> >
> > It doesn't really matter how it is implemented:  if you ask to start
> > at 0.1 and increment by 0.1, you should expect the result to be the
> > same as
> >
> > 0.1
> > 0.1+0.1
> > 0.1+0.1+0.1
> > etc.
> >
> > and I think it is.  The problem is that 0.1+0.1+0.1 is not the same
> > as 0.3, due to rounding.  Neither 0.1 nor 0.3 can be represented
> > exactly in the standard IEEE floating point formats that R uses.
> >
> > Duncan Murdoch
> >
> > ______________________________________________
> > R-help@r-project.org mailing list
> > https://stat.ethz.ch/mailman/listinfo/r-help
> > PLEASE do read the posting guide http://www.R-project.org/posting-
> guide.html
> > and provide commented, minimal, self-contained, reproducible code.
> 
> ______________________________________________
> R-help@r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-
> guide.html
> and provide commented, minimal, self-contained, reproducible code.

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to