[R] That dreaded floating point trap
Alexander Engelhardt
alex at chaotic-neutral.de
Thu Mar 31 14:14:46 CEST 2011
> A very straightforward way to avoid this problem is to construct the
> sequence by multiplying a sequence of integers by an approriate
> constant. E.g. for your first example:
>
> for( i in where ){
> thisdata<- subset(herde, herde$mlr>= i)
> # do stuff with thisdata..
> }
>
> 'where' is a vector like 0.1*((-10):10)
> [ instead of seq(-1, 1, by=0.1) ]
>
> and then, when you want to change to seq(-0.8, 1, by=0.1),
> use instead 0.1*(-80,10).
Hi,
this helps, thank you.
But if this code is in a function, and some user supplies a vector, I
will still have to round it in the function, I guess.
It's weird how 0.1 is different from round(0.1, digits=1) , but I don't
want to read that 90 page long floating point paper which was referenced
somewhere :)
Thanks,
Alex
More information about the R-help
mailing list