[R] as.character(seq(-.35,.95,.1))
Petr PIKAL
petr.pikal at precheza.cz
Wed Nov 21 09:33:33 CET 2007
Hi
r-help-bounces at r-project.org napsal dne 20.11.2007 17:07:42:
> On 11/20/2007 10:50 AM, Ken Fullish wrote:
> > > as.character(seq(-.25,.95,.1))
> > [1] "-0.25" "-0.15" "-0.05" "0.05" "0.15" "0.25" "0.35" "0.45"
> > "0.55" "0.65" "0.75" "0.85" "0.95"
> >
> > > as.character(seq(-.35,.95,.1))
> > [1] "-0.35" "-0.25"
> > "-0.15" "-0.0499999999999999" "0.05"
> > [6] "0.15" "0.25"
> > "0.35" "0.45" "0.55"
> > [11] "0.65" "0.75"
> > "0.85" "0.95"
> >
> > Not a big deal, just curiosity:
> > Why do I obtain this "ugly" "-0.0499999999999999" instead of the
> > expected "-0.05" ?
>
> Because as.character() tries to do an accurate conversion, and the
> number in your vector is closer to -0.0499999999999999 than to -0.05.
> You could get the "-0.05" by something like round( seq(...), 2).
>
> The reason seq() doesn't give you exactly -0.05 is that the starting
> values and step size you've chosen are not exactly representable in R's
> floating point format. It can only store fractions exactly when the
> denominator is a power of 2.
And it is not related exclusively to R but to floating point arithmetic in
computer binary language.
Regards
Petr
>
> Duncan Murdoch
>
> ______________________________________________
> R-help at 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.
More information about the R-help
mailing list