我需要一个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