找到最近的下一个甚至100

时间:2016-10-07 21:20:38

标签: javascript numbers zero

在javascript中,找到下一个甚至100("甚至100" = 200,400等)的最简单方法是哪个最接近给定数字。例如:1723应该返回1800,1402应该返回1600,21应该返回200,17659应该返回17800等。我有以下找到最接近的给定数量的100而不是偶数100

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

我可以想到一种方法,即在没有零的情况下获取数字,并检查它是奇数/偶数,如果它是奇数,则计算出下一个偶数。但是更好奇的是看是否有一些简单/优雅的方式。< / p>

3 个答案:

答案 0 :(得分:3)

基于bmb's comment,听起来你想要粒度为200,而不是100.如果是这样的话:

除以200,向上舍入,乘以200:

&#13;
&#13;
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;
&#13;
&#13;

如果你真的想通过四舍五入到下一个100,&#34;那么1723的结果必须是1900,如果1402的结果是1600,你通过除以100,向上舍入,乘以100,加100(或除以100,向上舍入,加1,乘以100,这是相同的事情):

&#13;
&#13;
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;
&#13;
&#13;

答案 1 :(得分:1)

如果不是偶数则递归调用,添加1以进入下一个100等

&#13;
&#13;
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;
&#13;
&#13;

答案 2 :(得分:-2)

试试这个:

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