【问题标题】:Rounding small floating point numbers舍入小浮点数
【发布时间】:2015-03-14 22:07:20
【问题描述】:

假设我有一个数字向量,我想将其四舍五入为“更漂亮”的数字,例如:

vec <- c(1.739362e-08,8.782537e-08,0.5339712)

我希望它是:

pretty.vec <- c(1.74e-08,8.78e-08,0.53)

我如何做到这一点?使用 round 并没有真正的帮助,因为它将前两个元素四舍五入为 0:

> round(vec,2)
[1] 0.00 0.00 0.53

【问题讨论】:

    标签: r rounding


    【解决方案1】:

    ?signif 怎么样? (根据您的应用程序,您也可以使用print(...,digits=3)

    vec <- c(1.739362e-08,8.782537e-08,0.5339712)
    signif(vec,digits=3)
    ## [1] 1.74e-08 8.78e-08 5.34e-01
    print(vec,digits=3)
    ## [1] 1.74e-08 8.78e-08 5.34e-01
    

    让 R 以不同的方式格式化向量的元素是相当困难的:通常它假设你想要这种一致性。

    print(sprintf("%1.3g",vec),quote=FALSE)
    ## [1] 1.74e-08 8.78e-08 0.534   
    

    还相关:?format?options(参见“scipen”)

    【讨论】:

      猜你喜欢
      • 2012-11-08
      • 1970-01-01
      • 1970-01-01
      • 2020-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多