【问题标题】:How to round up to the next 10? [duplicate]如何四舍五入到下一个 10? [复制]
【发布时间】:2019-03-07 13:54:16
【问题描述】:

R 中有没有一种方法可以将整数四舍五入到下一个 10?例如,从 0 到 9 的所有值都将转换为 10。当然 10 仍然是 10。然后从 11 到 19 的所有值都转换为 20 等等。我已经找到了如何四舍五入到最接近 10 的方法:round_to <- function(x, to = 10) round(x/to)*to

【问题讨论】:

  • 10.1 怎么样?
  • round(x/to)*to 更改为ceiling(x/to)*to 编辑:取决于您对@docendo discimus 所问问题的回答
  • docendo 仅整数。我会编辑。
  • @Henrik - 不确定这是否应该作为重复项关闭,因为此问题仅指定整数。在这种情况下,我们可以在这里使用整数数学答案,这可能比浮点数学更有效。例如。 next_ten <- function(x) (x %/% 10L + as.logical(x %% 10)) * 10L
  • 当然它不能作为重复关闭,因为它会寻找下一个而不是最近的。

标签: r


【解决方案1】:

我在 Stack Overflow 上找不到实际重复的答案,所以我发布了以下公式:

next_ten <- function(x) { 10*ceiling(x/10) }
v <- c(1, 5, 10, 11, 20, 29, 30, 31)
v
next_ten(v)

[1]  1  5 10 11 20 29 30 31
[1] 10 10 10 20 20 30 30 40

这个技巧的工作原理是首先找出有多少个十位或十位的小数部分 (ceiling(x/10))。然后,我们乘以 10,得到您想要的有效上限。

【讨论】:

  • 函数名混乱。我会称之为next_ten
  • 哦,太好了,谢谢。
猜你喜欢
  • 2013-07-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多