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

From: Zack Weinberg <zack_at_cogsci.ucsd.edu>
Date: Tue, 22 May 2007 00:13:38 -0700

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.

[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.]


R-devel_at_r-project.org mailing list

https://stat.ethz.ch/mailman/listinfo/r-devel Received on Tue 22 May 2007 - 09:08:53 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 Tue 22 May 2007 - 12:33:24 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.