【问题标题】:How can I tell R to round correctly?如何告诉 R 正确舍入?
【发布时间】:2018-06-29 20:53:15
【问题描述】:

如何告诉 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 和数字输出?

谢谢,

画了

【问题讨论】:

    标签: r numeric digits


    【解决方案1】:

    问题是默认情况下,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
    

    【讨论】:

    • 尊敬的 G5W,非常感谢您的回答。这解决了我的问题。
    【解决方案2】:

    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"
    

    【讨论】:

      猜你喜欢
      • 2021-12-18
      • 2013-07-08
      • 2019-03-26
      • 2018-03-13
      • 1970-01-01
      • 2014-03-08
      • 2012-03-07
      • 1970-01-01
      • 2022-11-18
      相关资源
      最近更新 更多