找到最近的下一个偶数 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);
在 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,向上取整,乘以 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);