[Rd] significant digits (PR#9682)

Patrick Carr pmc1 at cornell.edu
Tue Jun 3 22:07:10 CEST 2008


On 6/3/08, Duncan Murdoch <murdoch at stats.uwo.ca> wrote:
>
>  It's easy to make mistakes in this, but a little outside-of-R
> experimentation suggests those are the right answers.  The number 12345 is
> exactly representable, so it is exactly half-way between 12340 and 12350, so
> 12340 is the right answer by the unbiased round-to-even rule.  The number
> 0.12345 is not exactly representable, but (I think) it is represented by
> something slightly closer to 0.1235 than to 0.1234.  So it looks as though
> Windows gets it right.

Well, right within the limitations of binary floating-point
arithmetic. Not right right.

In the grander scheme, this is a nicety which is largely
inconsequential--if I need a real measure precision (precise
precision?) I'll use a +/- notation of a propagated error and/or edit
the typography of the numbers by hand immediately before the final
output. But again, final printed output of the number is basically the
useful use I see for a function that returns significant digits. And
for that purpose I think it should be right right, and actually output
the number of significant digits requested.

> >   > signif(12345.12345,digits=10)
> >   [1] 12345.12
>
>  This is a different problem.  The number is correctly computed as
> 12345.12345 (or at least a representable number quite close to that), and
> then the default display rounds it some more.  Set options(digits=19) to see
> it in its full glory.

Aha, my mistake; I missed that setting.

Pat Carr



More information about the R-devel mailing list