-1

假设 6 是基于其他计算的 NumberRequiredItems。我不想给出整个事情,只想做这个四舍五入的功能

我想做具体的四舍五入:

如果在 6 以内,则向下舍入为 24 的倍数(24 的最小值),否则向上舍入为 24 的倍数。

我知道我会做 24*Math.round(NumberRequiredItems),但我该怎么做“6 以内”?

例如,如果 56 之类的东西,最多 72 项。如果是 54,则下降到 48,等等。

我知道这似乎有点棘手,但我很想得到帮助。它甚至可以帮助你。

4

3 回答 3

0
function amount(NumberRequiredItems) {
    return 24 * Math.floor(NumberRequiredItems / 24) + (NumberRequiredItems % 24 > 6 ? 24 : 0);
}

http://jsfiddle.net/z7RtG/

于 2013-08-19T08:25:18.737 回答
0

您将使用 Modulo 运算符 ,%它进行除法并返回余数以检查您的条件。

例如:56 % 24 = 854 % 24 = 6

我会写你的舍入函数是这样的:

var roundRequiredItems = function (n) {
  if (n % 24 <= 6) {
    return Math.floor(n / 24) * 24
  } else {
    return Math.ceil(n / 24) * 24
  }
};
于 2013-08-19T08:34:49.927 回答
0

您可以利用这样一个事实,即在 javascript 中,n+true 等于 n+1 以一种聪明的方式解决您的问题:

function foo(n)
{
    return 24*( Math.floor(n/24) + (n%24 > 6));
}
于 2013-08-19T08:40:19.350 回答