Re: [Rd] R 2.5.0 refuses to print enough digits to recover exact floating point values

From: hadley wickham <h.wickham_at_gmail.com>
Date: Wed, 23 May 2007 11:57:22 +0200

On 5/23/07, hadley wickham <h.wickham_at_gmail.com> wrote:
> On 5/22/07, Uwe Ligges <ligges@statistik.uni-dortmund.de> wrote:
> >
> >
> > Zack Weinberg wrote:
> > > I have noticed that in R 2.5.0, no method of textual output will print
> > > a "double" mode quantity with more than 15 digits after the decimal
> > > point. From the help page (?print.default) it appears that this is
> > > intentional, since digits after the fifteenth may be uncertain.
> > > However, fifteen digits after the decimal point are not enough to
> > > represent all the values that an IEEE-double can take. (You need one
> > > more.) This means it is now impossible to write out data in textual
> > > format (e.g. in order to manipulate it with another program) and read
> > > back in exactly the same values. Some analyses are sensitive to this
> > > sort of extra rounding, especially if it happens repeatedly.
> > >
> > > I'd really appreciate some way of forcing R to print enough digits to
> > > represent every possible IEEE double value. I would also argue that
> > > this should be the default behavior of dump(), write.table() and
> > > friends, and save(...,ascii=TRUE), to prevent data loss.
> >
> > Example:
> >
> > formatC(exp(1), digits=100, width=-1)
>
> formatC(exp(1), digits=1000000, width=-1)
> *** caught bus error ***
> address 0x2, cause 'non-existent physical address'
>
> R version 2.5.0 (2007-04-23)
> i386-apple-darwin8.9.1

Ooops, and the traceback:

Traceback:

  1. .C("str_signif", x = x, n = n, mode = as.character(mode), width = as.integer(width), digits = as.integer(digits), format = as.character(format), flag = as.character(flag), result = blank.chars(i.strlen), PACKAGE = "base")
  2. formatC(exp(1), digits = 1e+06, width = -1)

Hadley



R-devel_at_r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel Received on Wed 23 May 2007 - 09:58:57 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Wed 23 May 2007 - 18:33:45 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-devel. Please read the posting guide before posting to the list.