2016-10-07 7 views
1

javascriptで、与えられた数に最も近い次の偶数100( "100" = 200,400など)を見つける最も簡単な方法は何ですか? EXについて:1723年には1800を返す必要があり、1402年には1600を返す必要があり、21は200を返す必要があり、17659は17800などを返す必要があります私はgiven_numの隣に最も近い100を見つけたが、いなくても100最も近い次の偶数を見つける100

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

以下を持っています

私は、0でない数字を取得し、その奇数/次が奇数であるかどうかを調べる方法を考えることができます。しかし、シンプルでエレガントな方法があるかどうかもっと知りたい。

+0

1723ルールが意味をなすのであれば、あなたは1900年ではなく、1800を与える必要があります。 –

+2

彼は200の次の倍数を望んでいると思う(「200」も200,400など) – bmb

+0

@bmb:ああ!オーケー.... 200によって –

答えて

3

あなたは200の粒度をしたいようなので、場合bmb's commentに基づいて、それはない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 
 
    }); 
 
}

「次の100」に丸めて作業したい場合は、1402の結果が1600であれば1723の結果は1900でなければならず、100で割り、100で切り上げ、100で割り算します。 100(または配分同じもの)である、切り上げ1を加算し、100を乗じ、100でINGの:再帰的でない場合でも

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

ええ、これは:)作品これは私が – prem89

1

コールは、次の100などに行く1を追加

function closestEven(n) { 
 
\t var x = Math.ceil(n/100), y = x * 100; 
 
\t 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

+0

探していたまさにでしたこのソリューションは、あまりにも素晴らしい作品:) – prem89

+0

が速くそこに100を追加、または条件100' + 'にYを返す:) – traktor53

+0

Traktor53 @ - 'ちょうど追加とにかく最も近い '100 'に丸められるので、それはそこに到達するためにすべての99の数字を反復しません。 – adeneo

-2

これを試してみてください。

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

+0

これは1402年のために動作しません...それは1500を返しますが、それは1600 – prem89

+0

も...と回答有用ではない「これは試す」必要があります。 *あなたが何をしたのか、*なぜ*を言ってください。 –

関連する問題