我需要一个R函数,无论参数有多大,该函数始终在小数点后返回相同位数。我尝试了round(),但这种方式无法正常工作。这是我的示例:

Rweb:> round(111234.678912,4) # expect 111234.6789
[1] 111234.7
Rweb:> round(111234.678912/10,4) # expect 11123.4679
[1] 11123.47
Rweb:> round(111234.678912/100,4) # expect 1112.3468
[1] 1112.347
Rweb:> round(111234.678912/1000,4)
[1] 111.2347
Rweb:> round(111234.678912/10000,4)
[1] 11.1235


如果参数为指数格式,它确实可以工作,但是我需要使用浮点格式的数字。

最佳答案

确实会将数字四舍五入为正确的数字。但是,R对于显示的非常大的数字位数有限制。那是-这些数字在那里,只是没有显示。

您可以这样看:

> round(111234.678912,4)
[1] 111234.7
> round(111234.678912,4) - 111234
[1] 0.6789


您可以使用formatC以任意位数显示它:

> n = round(111234.678912,4)
> formatC(n, format="f")
[1] "111234.6789"
> formatC(n, format="f", digits=2)
[1] "111234.68"


正如@mnel指出的那样,您还可以使用options设置显示的位数(包括小数点左边的位数):

> options(digits=6)
> round(111234.678912,4)
[1] 111235
> options(digits=10)
> round(111234.678912,4)
[1] 111234.6789

07-24 09:51