如何制作“漂亮的四舍五入”?

时间:2010-08-16 02:09:43

标签: r rounding

我需要像这样进行舍入并将其转换为字符:

as.character(round(5.9999,2))

我希望它变为6.00,但它只是给了我6

无论如何,我可以让它显示6.00吗?

3 个答案:

答案 0 :(得分:10)

尝试其中一项:

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

还有formatC()prettyNum()

答案 1 :(得分:2)

为了帮助解释正在发生的事情 - round(5.9999, 2)电话会将您的号码四舍五入到最接近的百分位数,从而为您提供非常接近(或完全相等)的数字(非字符串)如果你幸运的浮点表示,请6.00。然后as.character()查看该数字,最多取15个有效数字(请参阅?as.character),以便足够准确地表示它,并确定只需要1个有效数字。这就是你得到的。

答案 2 :(得分:-1)

正如Dirk所说,formatC()是另一种选择。

formatC(x = 5.999,digits = 2,format ='f')