如何告诉R正确舍入?

时间:2018-01-20 20:55:37

标签: r numeric digits

如何判断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带数字输出吗?

谢谢,

德鲁

2 个答案:

答案 0 :(得分:4)

问题是默认情况下,R只会输出7位数字。请参阅帮助页?getOption并搜索“数字”。

您可以通过更改设置以允许更多数字来更改此设置。

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

答案 1 :(得分:1)

round函数执行计算并根据分配给digits函数的round参数返回有效数字。但digits选项的global设置控制您在命令行输出中看到的内容。

您可以使用digits修改options值,也可以尝试转换为as.character以查看所需的输出。

digits中我当前的options设置5仍然低于计算效果。

Example:
> as.character(round(5/26*100, 6))
[1] "19.230769"
> as.character(round(5/26*100, 7))
[1] "19.2307692"