Ich versuche, die Rmpfr
Bibliothek mit der round()
Funktion zu verwenden, um die round half to even Regel anwenden und korrekte Ergebnisse erzielen als ohne Fehler aufgrund der endlichen Genauigkeit von float Punktwerten, here beschrieben.Rmpfr Verwendung mit Präzision in R abzurunden
Bisher ist es das, was ich erreicht habe:
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"
Aber in einigen Fällen, die ich nicht bekommen, um die gewünschten Ergebnisse:
round2(1.152, 2)# Should be 1.15
#[1] "1.16"
die Rmpfr
docs Lesen, am roundMpfr()
Funktion, es sagt:
Die mpfr Klassengruppe Methode Math2 implementiert eine Methode für Runde (x, Ziffern) whi ch rundet auf Dezimalziffern.
Aber ich kann mir nicht vorstellen, wie man es benutzt.
Wie kann ich mit Rmpfr
die gewünschten Rundenergebnisse erzielen?
versuchen Sie roundMpfr() anstelle von Runde(). – Thell