R:从.6向上舍入

时间:2019-09-20 01:51:45

标签: r rounding

如何从.6(而不是.5)开始取整?

例如,round(53.51245, 4)会给我53.5125,但我想要53.5124

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

1 个答案:

答案 0 :(得分:1)

我不确定这是否与评论中链接到的帖子重复(但该帖子肯定是相关的)。据我了解,OP希望分别对值分别为>= 0.6< 0.6进行向上或向下取整。 (链接的帖子指的是数字应四舍五入到的位数,这是一个不同的问题。)

针对OP的问题,以下是一个选项,我们在其中定义了自定义函数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