找到最近的下一个偶数 100

Find nearest next even 100

在 javascript 中,找到最接近给定数字的下一个偶数 100("even 100" = 200、400 等)的最简单方法是什么。例如:1723 应该 return 1800、1402 应该 return 1600、21 应该 return 200、17659 应该 return 17800 等。我有以下内容可以找到最近的 100 given_num 但不是偶数 100

(parseInt(((given_num + 99) / 100 )) * 100 )

我可以想到一种方法来获取不带零的数字并检查它是否 odd/even 以找出下一个偶数,如果它 odd.But 更好奇的是看看是否有一些 simple/elegant 方式。

基于 ,听起来您想要的粒度是 200,而不是 100。如果是这样:

除以 200,向上取整,乘以 200:

var tests = [
  {value: 1723, expect: 1800},
  {value: 1402, expect: 1600},
  {value: 21, expect: 200},
  {value: 17659, expect: 17800}
];
tests.forEach(test);
function test(entry) {
  var result = Math.ceil(entry.value / 200) * 200;
  console.log({
    value: entry.value,
    expect: entry.expect,
    result: result
  });
}

如果您真的想四舍五入到 "next 100,",那么如果 1402 的结果是 1600,则 1723 的结果必须是 1900,您可以通过除以 100、四舍五入、乘法来完成除以 100,再加 100(或者除以 100,四舍五入,加 1,乘以 100,是一回事):

var tests = [
  {value: 1723, expect: 1800},
  {value: 1402, expect: 1600},
  {value: 21, expect: 200},
  {value: 17659, expect: 17800}
];
tests.forEach(test);
function test(entry) {
  var result = Math.ceil(entry.value / 100) * 100 + 100;
  console.log({
    value: entry.value,
    expect: entry.expect,
    result: result
  });
}

如果不偶数则递归调用,添加1去下一个100等

function closestEven(n) {
 var x = Math.ceil(n / 100 ), y = x * 100;
 return x % 2 === 0 ? y : closestEven(y+1);
}

console.log( closestEven(1723) ); // 1800
console.log( closestEven(1402) ); // 1600
console.log( closestEven(21) );   //  200
console.log( closestEven(17659)); // 17800

试试这个:

var given_num = 1723;
var result = (given_num) + (100 - ((given_num + 100) % 100));
alert(result);