r - R:从 0.6 向上取整
问题描述
从 0.6(而不是 0.5)开始如何四舍五入?
例如,round(53.51245, 4)
将返回我53.5125
,但我想要53.5124
。
如何指定分隔数(即从 .6 开始增加值)?
解决方案
我不确定这是否与评论中链接的帖子重复(但帖子可能肯定是相关的)。>= 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