On Thu, 2005-10-27 at 15:24 +0200, [EMAIL PROTECTED] wrote: > Full_Name: Grischa Tödt > Version: 2.1.1 > OS: windows XP > Submission from: (NULL) (192.108.25.32) > > > I have a strange behaviour in R, looks like type conversions are messed up. > > To reproduce: > > expected: > > typeof(3) > [1] "double" > > > as.integer(3) > [1] 3 > > !!!! strange: > > typeof((0.3/0.1)) > [1] "double"
> > as.integer((0.3/0.1)) > [1] 2 > > also for trunc: > >trunc(c(5,7)) > >c(0.5,0.7)/c(0.1,0.1) > > and now watch the amazing!!!!: > >trunc((c(0.5,0.7)/c(0.1,0.1))) > trunc((c(0.5,0.7)/c(0.1,0.1))) [1] 5 6 You are getting bitten (you know where) by floating point representation issues here: > print(0.3 / 0.1, digits = 20) [1] 2.9999999999999995559 > print(0.7 / 0.1, digits = 20) [1] 6.9999999999999991118 So as.integer() and trunc() is working as intended, since in both cases, they truncate towards 0. Bottom line: NOTABUG Read R FAQ 7.31 and the reference cited there for more information. HTH, Marc Schwartz ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel