Thanks Martin, looks like the update fixed the issue. The round2 function is just to format the output.
now I can get the correct result: library(Rmpfr) sprintf("%#.2f", round(mpfr(1.152, 200),2)) round2(1.152, 2) #[1] "1.15" Artur 2014-11-27 7:10 GMT-02:00 Martin Maechler <maech...@stat.math.ethz.ch>: >>>>>> Artur Augusto <arturaugu...@gmail.com> >>>>>> on Wed, 19 Nov 2014 15:26:12 -0200 writes: > > > I'm trying to use the Rmpfr library with the round() function to apply > > the round half to even rule and achieve correct results, without > > errors due the finite precision of float point values. > > > Example of problem: > > > round(1.225,2) > > #[1] 1.23 > > > So far, this is what I've achieved: > > > library(Rmpfr) > > x <- c(1.225, 1.2225, 1.22225, 1.222225) > > n <- c(2, 3, 4, 5) > > round2 <- function(x, n){ > > sprintf(paste("%#.", n, "f", sep=""), round(mpfr(as.character(x), 200), > n)) > > } > > mapply(round2, x, n) > > #[1] "1.22" "1.222" "1.2222" "1.22222" > > The above round2() function is really pretty strange [what do you really > want?] > but below, you have a very good point : > > > But in some cases I don't get the desired results: > > > round2(1.152, 2)# Should be 1.15 > > #[1] "1.16" > > > Reading the Rmpfr docs, at the roundMpfr() function, it says: > > Actually, roundMpfr() is *not* used by round(<mpfr>, *) > It has somewhat different semantics. That's why I used a new > function name, roundMpfr(), whereas the round() method for > "mpfr" objects is what you get from > > selectMethod(round, "mpfr") > > > The mpfr class group method Math2 implements a method for round(x, > > digits) which rounds to decimal digits. > > Indeed... and that is different from the roundMpfr() as > mentioned above. > > > But I can't figure how to use it. > > > How can I achieve desired rounded results? > > Artur > > Wait a day or two [depending on how quickly the new Rmpfr version 0.5-7 > gets published on CRAN], and update your Rmpfr package. > The problem is fixed in Rmpfr 0.5-7. > > If you had CC'ed your e-mail to > maintainer("Rmpfr") > I would have heard of the problem earlier and almost surely > have fixed it earlier. > > Best regards, > Martin Maechler (maintainer of 'Rmpfr'). ______________________________________________ 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.