2016-11-07 7 views
1

Как добраться до 1000 для заданного числа. Я написал вот так.Как получить ближайший 1000 к указанному номеру с помощью jquery?

function roundToNearest(numToRound, numToRoundTo) { 
    numToRoundTo = 1/(numToRoundTo); 

    return Math.round(numToRound * numToRoundTo)/numToRoundTo; 
} 
alert(roundToNearest(2499,1000)); 

Я получаю правильные результаты, но если мне 1500, мне нужно получить только 1000.

ex: 1100=>1000, 
1400=>1000, 
1500=>1000, 
1600=>2000, 
2000=>2000 

Но с помощью описанных выше функций я получаю 2000 за 1500 вместо 1000. Как получить 1000, если число 1500?

+2

Таким образом, чтобы быть ясно, '1500' должен круглый для' 1000' и ​​'1501' должны круглый для' 2000', верно? –

+0

Поскольку ближайшее целое число до 1/2 - это следующее число вверх - т.е. оно округляется. Почему вы ожидаете 1500 дать 1000? –

+0

yes its right @RoryMcCrossan –

ответ

1

Предполагая, что вы хотите 1500 округлить до 1000 и 1501 округлить до 2000 вы просто перемещая округление по умолчанию указывают на один. В этом случае вы можете просто вычесть один из значения, которое нужно округлить. Пока вы только округляете целые положительные целые числа, это не должно вызывать никаких проблем. Попробуйте это:

function roundToNearest(numToRound, numToRoundTo) { 
 
    numToRoundTo = 1/(numToRoundTo); 
 
    return Math.round((numToRound - 1) * numToRoundTo)/numToRoundTo; 
 
} 
 

 
[2, 1100, 1500, 1501, 1600, 2000].forEach(function(v) { 
 
    console.log(v, roundToNearest(v, 1000)); 
 
});