r - 为什么 R 轮函数不轮大数

标签 r math statistics rounding

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

相关文章:

r - ggplot : geom_text does not center-align above geom_col()

r - 如何更改 ggplot 中的标签(图例)?

java - 在 Java 中估计 Holt-Winters 平滑系数

c++ - 编写 GUI 来显示统计信息

python - 如何在没有 SymPy 的情况下计算给定函数的积分?

mysql时差计算的一些变化

html - 创建一个数据框,使用 pkg :sjPlot functions 生成部分斜体单元格

R 警告 : "' package:stats' may not be available when loading"

r - 根据投票百分比同时移动所有几何条

javascript - 在设定时间内从零增加到数字