【问题标题】:Round Up to the nearest multiple of 12 [duplicate]四舍五入到最接近的 12 的倍数 [重复]
【发布时间】:2013-01-23 16:47:05
【问题描述】:

可能重复:
Round number up to the nearest multiple of 3

我需要一个 javascript 调用,它将数字四舍五入到最接近的 12 的倍数。

一些例子:

1 -> 12

7 -> 12

14 -> 24

27 -> 36

有没有人知道这样做的好方法?我能想到的只是“如果在 1-11 之间,则设为 12。如果在 13-23 之间,则设为 24,等等。”但这似乎效率不高。

【问题讨论】:

  • 除以 12,四舍五入,再乘以 12。
  • @epascarello 如果它是重复的,我很抱歉,我在发布之前没有看到它

标签: javascript math rounding


【解决方案1】:

使用Math.ceil()

var n = 13;
var next = Math.ceil(n/12) * 12;

【讨论】:

  • 对于 n
  • @HunterMcMillen,这是不正确的,对于所有小于零的值,它都不会为零。它将四舍五入到最接近零的 12。又名-25 将是-24。零就是零,因为零是 12 的倍数。
  • 有趣。许多语言 5/12 会导致整数除法,Javascript 似乎将结果保留为浮点数。至少这是我从 chrome 得到的:5/12 = 0.4166666666666667,不过我希望为 0。
  • 这太完美了,谢谢!
  • @HunterMcMillen 那是因为 JavaScript 除了浮点之外没有别的东西。 (使用二进制(如位级)运算符时作为中间步骤除外)
【解决方案2】:

对于正整数:

ceiling(n/12.0) * 12

对于负整数:

floor(n/12.0) * 12

对于零:

return 12

【讨论】:

  • 如果是负零怎么办? ;)
  • 可能不会,我听说这个数字很少见。
【解决方案3】:
function nearest(i) {
    return Math.floor((i-1)/12)*12+12;
}

【讨论】:

  • +1 for ceil by epascarello,效果相同,但方式更简洁。
【解决方案4】:
function roundIt(n) {
    return Math.ceil(n / 12) * 12;
}

【讨论】:

    猜你喜欢
    • 2011-03-25
    • 1970-01-01
    • 2021-04-08
    • 1970-01-01
    • 1970-01-01
    • 2012-03-07
    • 2011-03-16
    • 2014-06-20
    • 1970-01-01
    相关资源
    最近更新 更多