如何告诉R正确地四舍五入?

3

如何让R正确四舍五入?

R中的小数位数 我遇到了一个问题,无法解决 我希望R计算5/26*100 = 19.230769后进行四舍五入。

x <- 5/26*100
x

给我:
[1] 19.23077

让我们尝试使用 round() 函数,首先将小数点后保留位数设置为 4:

x <- round(5/26*100,digits=4)
x

提供:

[1] 19.2308

接下来,让我们将数字设置为5:
x <- round(5/26*100,digits=5)
x

提供:

[1] 19.23077

现在,让我们将数字设置为6:
x <- round(5/26*100,digits=6)
x

提供:

[1] 19.23077

请问有人可以告诉我如何修复这个问题吗?您的 RStudio 是否也能正确四舍五入呢?

我也尝试过使用 signif() 函数。

x <- signif(5/26*100,digits=6)
x

给我们:

[1] 19.2308

增加到7位数:

> x <- signif(5/26*100,digits=7)
> x
[1] 19.23077

增加到8个数字:

> x <- signif(5/26*100,digits=8)
> x
[1] 19.23077

我们可以使用sprintf()函数

 > x <- sprintf("%0.6f", (5/26*100))
  > x
   [1] "19.230769"

sprintf()解决了四舍五入的问题,但它又通过将数字值更改为字符而创建了一个新问题。

有人能向我展示如何让r给出5/26*100 = 19.230769的数字输出吗?

谢谢,

Drew

2个回答

4
问题在于默认情况下,R仅会打印出7个数字。请参见帮助页面?getOption并搜索“digits”以了解更多信息。
您可以通过更改设置以允许更多数字来解决此问题。
options(digits=13)
round(5/26*100,digits=6)
[1] 19.230769
round(5/26*100,digits=7)
[1] 19.2307692
round(5/26*100,digits=8)
[1] 19.23076923

亲爱的G5W,非常感谢您的回答。这解决了我的问题。 - user9237696

1
round函数根据所分配给round函数的digits参数进行计算并返回有效数字。但是,在命令行输出中,global选项中的digits设置控制您所看到的内容。options可以修改digits值,或者尝试将其转换为as.character以查看期望的输出。options中我的当前digits设置为5,但以下计算仍然有效。
Example:
> as.character(round(5/26*100, 6))
[1] "19.230769"
> as.character(round(5/26*100, 7))
[1] "19.2307692"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接