2010-08-16 32 views
8

tôi cần phải làm một làm tròn như thế này và chuyển đổi nó như là một nhân vật:Làm thế nào để làm cho "khá làm tròn"?

as.character(round(5.9999,2)) 

Tôi hy vọng nó sẽ trở thành 6.00, nhưng nó chỉ mang lại cho tôi 6

Liệu có cách nào mà tôi có thể làm cho nó thấy 6.00?

Trả lời

10

Hãy thử hoặc là một trong những:

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

Ngoài ra còn có formatC()prettyNum().

2

Để giúp giải thích những gì đang xảy ra - cuộc gọi round(5.9999, 2) đang đi ngang số của bạn đến nơi trăm gần nhất, mang đến cho bạn những số (không dây) rất gần (hay chính xác bằng, nếu bạn nhận được may mắn với nổi đại diện-điểm) 6,00. Sau đó, as.character() xem xét con số đó, cần đến 15 chữ số có nghĩa của nó (xem ?as.character) để đại diện cho nó đủ chính xác và xác định rằng chỉ cần 1 chữ số có nghĩa. Vì vậy, đó là những gì bạn nhận được.

-1

Như Dirk đã chỉ ra, formatC() là một tùy chọn khác.

định dạngC (x = 5.999, chữ số = 2, định dạng = 'f')

Các vấn đề liên quan