Próbuję użyć biblioteki Rmpfr
z funkcją round()
aby zastosować regułę round half to even i uzyskania poprawnych wyników, bez błędów z powodu skończonej precyzji wartości punktowych float, jak opisano here.Korzystanie Rmpfr zaokrąglić z dokładnością w R
Jak dotąd, jest to, co już osiągnięte:
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"
Jednak w niektórych przypadkach nie uzyskania pożądanych wyników:
round2(1.152, 2)# Should be 1.15
#[1] "1.16"
przeczytaniu Rmpfr
Dokumentach Pod roundMpfr()
funkcja, mówi:
Metoda grupy mpfr Math2 implementuje metodę dla rundy (x, cyfry) whi ch zaokrągla do cyfr dziesiętnych .
Ale nie mogę wymyślić, jak z niego korzystać.
Jak mogę uzyskać pożądane wyniki w rundzie przy użyciu Rmpfr
?
Spróbuj roundMpfr() zamiast round(). – Thell