2010-08-16 19 views
8

Ich brauche eine Rundung wie dies zu tun und es als ein Zeichen zu konvertieren:Wie macht man "schöne Rundungen"?

as.character(round(5.9999,2)) 

ich es erwarte 6.00 zu werden, aber es gibt mir nur 6

Gibt es trotzdem, dass ich es zeigen machen 6.00?

Antwort

10

Versuchen Sie eine dieser:

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

Es gibt auch formatC() und prettyNum().

2

erklären zu helfen, was los ist - der round(5.9999, 2) Anruf Ihre Zahl auf das nächste Hundertstel rundet, mit dem Ihnen die Nummer (nicht string) ganz in der Nähe (oder genau gleich, wenn du mit schwebendem Glück gibt -Punktdarstellungen) 6.00. Dann betrachtet diese Nummer, nimmt bis zu 15 signifikante Ziffern davon (siehe ?as.character), um es mit ausreichender Genauigkeit darzustellen, und bestimmt, dass nur 1 signifikante Ziffer notwendig ist. Das bekommst du also.

-1

Wie Dirk angedeutet hat, ist formatC() eine weitere Option.

formatC (x = 5.999, Ziffern = 2, Format = 'f')