在javascript中,找到下一个甚至100("甚至100" = 200,400等)的最简单方法是哪个最接近给定数字。例如:1723应该返回1800,1402应该返回1600,21应该返回200,17659应该返回17800等。我有以下找到最接近的给定数量的100而不是偶数100
(parseInt(((given_num + 99) / 100 )) * 100 )
我可以想到一种方法,即在没有零的情况下获取数字,并检查它是奇数/偶数,如果它是奇数,则计算出下一个偶数。但是更好奇的是看是否有一些简单/优雅的方式。< / p>
答案 0 :(得分:3)
基于bmb's comment,听起来你想要粒度为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 / 100) * 100 + 100;
console.log({
value: entry.value,
expect: entry.expect,
result: result
});
}
&#13;
如果你真的想通过四舍五入到下一个100,&#34;那么1723的结果必须是1900,如果1402的结果是1600,你通过除以100,向上舍入,乘以100,加100(或除以100,向上舍入,加1,乘以100,这是相同的事情):
for(int i = 0; i < NUM; i++) {
Mat avgImg(480, 640, CV_32FC3, Scalar()); // Create and zero initialize
Mat capturedImg;
for (framenumb = 10 * i; framenumb < (10 * i) + 10; ++framenumb) {
// avgImg.create(480, 640, CV_32FC3); // Don't create each time!
capturedImg = images[framenumb];
cv::accumulate(capturedImg, avgImg);
}
avgImg = avgImg / 100;
avgImg.convertTo(avgImg, CV_8UC3);
imshow("averaged", avgImg);
}
&#13;
答案 1 :(得分:1)
如果不是偶数则递归调用,添加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
&#13;
答案 2 :(得分:-2)
试试这个:
var given_num = 1723;
var result = (given_num) + (100 - ((given_num + 100) % 100));
alert(result);