On 5/23/07, hadley wickham <[EMAIL PROTECTED]> wrote: > On 5/22/07, Uwe Ligges <[EMAIL PROTECTED]> 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@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel