r - 使用 round() 后跟 signif() 进行连续舍入后的尾随零

标签 r rounding trailing significant-digits

我正在尝试对任何实数应用顺序舍入函数,以便满足以下条件:“报告的数字应不超过两位小数且不超过两位有效数字”。

例如:
0.0236 应报告为 0.02
0.236 应报告为 0.24
2.36 应报告为 2.4
23.6 应报告为 24
236应该报告为240

似乎只要在用 roundsignif 舍入后有尾随零,这些都会被忽略(例如 0.90023 变成 0.9 而不是 0.90)。我尝试了以下代码:

    my_round <- function(x1) {
            x2 <- formatC(x1, digits=2, format="f", drop0trailing=FALSE)
            x2 <- as.numeric(x2)
            x3 <- formatC(x2, digits=2, format="fg", flag="#", drop0trailing=FALSE)
            x3 <- as.numeric(x3)
            print(x3)
    }

这适用于任何数字,除了像 195(整数部分超过两位有效数字)这样的数字,它仍然是 195 而不是四舍五入到 200。

我将不胜感激就此主题提供的任何帮助。
(R v3.1.0, 2014-04-10)

最佳答案

您可以将函数sprintf 和讨论的想法结合起来here .

ceil.ten <- function(x) 
  if (x > 100) ceiling(x/10)*10 else x

sprintf("%.2f", ceil.ten(0.0236))
# [1] "0.02"
sprintf("%.2f", ceil.ten(0.236))
# [1] "0.24"
sprintf("%.2f", ceil.ten(2.36))
# [1] "2.36"
sprintf("%.2f", ceil.ten(23.6))
# [1] "23.60"
sprintf("%.2f", ceil.ten(236))
# [1] "240.00"
sprintf("%.2f", ceil.ten(195))
# [1] "200.00"

关于r - 使用 round() 后跟 signif() 进行连续舍入后的尾随零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24928656/

相关文章:

r - 绘图编织错误: "unable to start png() device"

javascript - 在 Javascript 中将钱四舍五入到最接近的 10 美元

java - 如何更新我的 Java 程序以仅显示两位小数

wcf - WCF Rest 4.0 中不带尾部斜杠的简单 URL 路由

python - datetime strptime - 设置格式以忽略字符串的结尾部分

r - 如何使用 fct_reorder 对数据帧中的因子重新排序?

r - 具有多个重叠误差线的条形图

r - 在 R 中绘制平滑图

将 R 中的日期舍入为任意分钟/小时的精度级别

php - 模型保存或更新时 Laravel 尾随数据异常