首页 > 解决方案 > R:从 0.6 向上取整

问题描述

从 0.6(而不是 0.5)开始如何四舍五入?

例如,round(53.51245, 4)将返回我53.5125,但我想要53.5124

如何指定分隔数(即从 .6 开始增加值)?

标签: rrounding

解决方案


我不确定这是否与评论中链接的帖子重复(但帖子可能肯定是相关的)。>= 0.6据我了解,如果它们分别是或, OP希望向上或向下“四舍五入”值< 0.6。(链接的帖子是指一个数字应该四舍五入的位数,这是一个不同的问题。)

针对 OPs 的问题,这里有一个我们定义自定义函数的选项my.round

my.round <- function(x, digits = 4, val = 0.6) {
    z <- x * 10^digits
    z <- ifelse(signif(z - trunc(z), 1) >= val, trunc(z + 1), trunc(z))
    z / 10^digits
}

然后

x <- 53.51245
my.round(x, 4)
#[1] 53.5124

x <- 53.51246
my.round(x, 4)
#[1] 53.5125 

my.round是矢量化的,所以我们可以做到

my.round(c(53.51245, 53.51246, 53.51246789), digits = 4)
#[1] 53.5124 53.5125 53.5125

推荐阅读