favore potete aiutare a risolvere questo problema:volte arrotondamento numero non sono coerenti
round(30.5)
[1] 30
round(31.5)
[1] 32
voglio ottenere sempre 0,5 s verso l'alto o verso il basso. Qualsiasi soluzione
favore potete aiutare a risolvere questo problema:volte arrotondamento numero non sono coerenti
round(30.5)
[1] 30
round(31.5)
[1] 32
voglio ottenere sempre 0,5 s verso l'alto o verso il basso. Qualsiasi soluzione
Questa è un'altra istanza di R-FAQ 7.31 (link to the FAQ on your device) ...... (link to the CRAN version). Se si desidera sempre che i numeri in virgola mobile vengano visualizzati da print.default
come x.5 a "arrotondamento", è necessario aggiungere un po 'di "fuzz". Ho scelto quella quantità di fuzz per essere simile all'accuratezza con cui print.default visualizza solitamente i numeri.
> round(30.5 +0.00000001)
[1] 31
per rendere questo accada in una funzione:
> round.up <- function(x, digits=0) round(x+0.00000001, digits)
> round.up(30.5)
Si potrebbe anche riflettere questa:
> 31.5==31.50000000000000001
[1] TRUE
> 31.5==31.5000000000000001
[1] TRUE
> 31.5==31.500000000000001
[1] TRUE
> 31.5==31.50000000000001
[1] FALSE
> 31.50000000000001
[1] 31.5
> 31.50000001
[1] 31.5
> 31.50001
[1] 31.50001
Una soluzione che non ha bisogno di una stampa in formato dipendente offset:
Per arrotondare sempre, utilizzare
ceiling(x - 0.5)
per arrotondare sempre verso il basso, utilizzare
floor(x + 0.5)
'floor' o' ceiling'? – Khashaa
Li conosco, non è dispiaciuto. Non abbiamo idea dei numeri, ma quando abbiamo 0.5s in dati, voglio ottenerli sempre in su o in giù – user1309
arrotondare per pareggiare è una regola matematica di base – rawr