我需要ceiling
和floor
函数的十进制变体。像signif
这样的东西,可以选择要朝哪个方向取整。
例如,我需要将数字2.63转换为2.7,而不是3(ceiling
)或2.6(signif(2.63,2)
)。
我能想到的唯一解决方案是乘以10,然后采用ceiling
再除以10。ceiling(2.63*10)/10
我敢肯定,必须有一个更优雅的解决方案。
我的问题与this one非常相似。
最佳答案
@ 42-评论中的答案似乎很有用,不能仅留在评论中,因此,此Wiki-post。
您可以创建自己的函数并适应floor
和ceiling
功能,添加level
选项以模仿digits
函数的round
参数,如下所示:
floor_dec <- function(x, level=1) round(x - 5*10^(-level-1), level)
ceiling_dec <- function(x, level=1) round(x + 5*10^(-level-1), level)
示例:
# floor
floor_dec(1.259, 2)
[1] 1.25
floor_dec(1.9, 0)
[1] 1
floor_dec(29, -1)
[1] 20
floor_dec(1.251, 2)
[1] 1.25
floor_dec(1.2, 0)
[1] 1
floor_dec(23, -1)
[1] 20
# ceiling
ceiling_dec(1.259, 2)
[1] 1.26
ceiling_dec(1.9, 0)
[1] 2
ceiling_dec(29, -1)
[1] 30
ceiling_dec(1.251, 2)
[1] 1.26
ceiling_dec(1.2, 0)
[1] 2
ceiling_dec(23, -1)
[1] 30
关于r - R:十进制上限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35807523/