【问题标题】:R round exponential numberR 舍入指数数
【发布时间】:2011-08-06 05:49:03
【问题描述】:

我只是想把 R 数四舍五入:

> round(1.327076e-09)

我希望它产生

> 1.33e-09

但结果

> 0

可以使用哪个功能?

【问题讨论】:

  • 为什么返回1.32e-09不应该是1.33e-09?还是您只想截断第二个 dp 之后的数字?

标签: r rounding stat


【解决方案1】:

试试signif:

> signif(1.326135235e-09, digits = 3)
[1] 1.33e-09

【讨论】:

    【解决方案2】:

    使用signif:

    x <- 1.327076e-09 
    signif(x,3)
    [1] 1.33e-09
    

    sprintf:

    sprintf("%.2e",x)
    [1] "1.33e-09"
    

    【讨论】:

    • sprintf 良好通话。通常,您只想在显示数字时丢失精度,而不是在实际计算中。 roundsignif 应谨慎使用。
    【解决方案3】:

    函数round会进行四舍五入,你可以指定小数位数:

    x <- 1.327076e-09
    round(x, 11)
    [1] 1.33e-09
    

    迎接@Joris 和@GavinSimpson 提出的挑战 - 要在此问题上使用trunc,请执行以下操作:

    library(plyr)
    round_any(x, 1e-11, floor)
    [1] 1.32e-09
    

    【讨论】:

    • 您可以添加 trunc() 来执行 OP 正在执行的操作(而不是他的要求)。
    • 叮咚!这是我看到所需输出时想到的功能,但我认为 OP 问题中的四舍五入取代了指定的输出。
    • @Joris 但如何让trunc() 在这里工作:&gt; trunc(1.327076e-09) [1] 0
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-27
    • 2014-06-10
    • 2015-12-11
    • 2012-06-19
    • 2017-08-15
    • 2018-07-19
    • 2021-03-23
    相关资源
    最近更新 更多