我需要像这样进行舍入并将其转换为字符:
as.character(round(5.9999,2))
我希望它变为6.00
,但它只是给了我6
无论如何,我可以让它显示6.00
吗?
答案 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')