sto cercando di utilizzare la libreria Rmpfr
con la funzione round()
di applicare la regola round half to even e raggiungere risultati corretti, senza errori dovuti alla precisione finito di valori puntuali float, come descritto here.Utilizzo Rmpfr per arrotondare con precisione in R
Finora, questo è quello che ho raggiunto:
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"
Ma in alcuni casi non ottengo i risultati desiderati:
round2(1.152, 2)# Should be 1.15
#[1] "1.16"
la lettura dei documenti Rmpfr
, al roundMpfr()
funzione, dice:
Il metodo di gruppo classe mpfr Math2 implementa un metodo per round (x, cifre) whi ch rounds a cifre decimali.
Ma non riesco a capire come usarlo.
Come è possibile ottenere risultati arrotondati desiderati utilizzando Rmpfr
?
provare roundMpfr() anziché round(). – Thell