2010-08-16 19 views
8

tengo que hacer un redondeo como este y convertirlo como un personaje:¿Cómo hacer "redondeo bonito"?

as.character(round(5.9999,2)) 

espero que se convierta en 6.00, pero simplemente me da 6

¿Hay alguna forma que yo puedo hacer que se muestre 6.00?

Respuesta

10

intente cualquiera uno de estos:

> sprintf("%3.2f", round(5.9999, digits=2)) 
[1] "6.00 
> sprintf("%3.2f", 5.999) # no round needed either 
[1] "6.00 

Hay también formatC() y prettyNum().

2

Para ayudar a explicar lo que está pasando - la llamada round(5.9999, 2) está redondeando su número a la centésima más cercana, que le da la número (no cadena) muy cerca (o exactamente igual a, si tienes suerte con la flotación representaciones de puntos) 6.00. Luego, as.character() examina ese número, toma hasta 15 dígitos significativos del mismo (consulte ?as.character) para representarlo con suficiente precisión, y determina que solo es necesario 1 dígito significativo. Entonces eso es lo que obtienes.

-1

Como lo indicó Dirk, formatC() es otra opción.

formatoC (x = 5.999, dígitos = 2, formato = 'f')