我需要一个 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
如果参数是指数格式,它确实有效,但我需要处理 float 格式的数字。
最佳答案
它确实将数字四舍五入到正确的位数。但是,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
关于r - 为什么 R 轮函数不轮大数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12488771/