On 05/06/2008 8:48 PM, Peter Dunn wrote:
Hi all
I am not a C programmer, but I am trying to understand formatC to
get consistent printing of reals to a given number of significant
digits.
Can someone please explain this to me? These first three give what
I expect on reading ?formatC:
formatC(0.0059999, digits=2,format="fg",flag="#")
[1] "0.0060"
formatC(0.59999, digits=2,format="fg",flag="#")
[1] "0.60"
formatC(5.9999, digits=2,format="fg",flag="#")
[1] "6.0"
This seems consistent with what I read (but perhaps do not
understand) in ?formatC, where I read this:
digits the desired number of digits after the decimal point
(format = "f") or significant digits (format = "g", = "e" or
= "fg").
Since I am using format="fg" and digits=2, so I am expecting two
significant digits to always show, which I have above. So I fail to
understand this:
formatC(0.000059999, digits=2,format="fg",flag="#")
[1] "0.00006"
formatC(0.000059, digits=2, format="fg",flag="#")
[1] "0.000059"
I was expecting both of these to produce "0.000059". But in the
first case above, I get one significant digit only.
I'm obviously misunderstanding something; can someone enlighten me?
(No doubt, someone will point out a nuance of the help files I
didn't understand!)
Also, since the above obviously doesn't do what I hoped
(consistently printing two sig figs), could someone also explain
how I can consistently get two significant figures in situation
like above?
I'll let someone else comment on whether this is a bug in formatC; it
looks like a bug or a documentation error to me.
You can get 2 sig figs in your situation like this:
sprintf("%.6f",0.000059999)
but obviously this doesn't help with numbers on a different scale. For
those, I think you're going to have to put together something like
x <- 0.0000599999
sprintf("%.*f", -trunc(log10(x))+2, x)
(which only works for numbers less than 1).
Duncan Murdoch
______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.