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

From: Uwe Ligges <ligges_at_statistik.uni-dortmund.de>
Date: Tue, 22 May 2007 12:10:39 +0200

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)

Uwe Ligges

> [Tangentially, support for C99 hexadecimal notation for floating point
> values in input and output would also be nice, but wouldn't help much
> for interoperability, since very few programs understand it.]
>
> zw
>
> ______________________________________________
> R-devel_at_r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel



R-devel_at_r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel Received on Tue 22 May 2007 - 10:25:18 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 - 10:33:30 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.