Округление до ближайшего 100 - PullRequest
22 голосов
/ 25 февраля 2009

Первое число должно быть округлено до ближайшего второго числа. Есть много способов сделать это, но какой алгоритм самый лучший и самый короткий? Кто-нибудь на вызов :-)

1244-> 1200
1254-> 1300
123-> 100
178-> 200
1576-> 1600
1449-> 1400
123456-> 123500
654321-> 654300
23-> 00
83-> 100

Ответы [ 7 ]

54 голосов
/ 11 мая 2013

Метод округления Руби может потреблять отрицательную точность:

n.round(-2)

В этом случае -2 дает округление до ближайшей сотни.

32 голосов
/ 25 февраля 2009

Для ввода n:

(n + 50) / 100 * 100

с использованием целочисленного деления.

Обратите внимание, что многие языки / библиотеки уже имеют функции для этого.

7 голосов
/ 25 февраля 2009
100 * round(n/100.0)
4 голосов
/ 27 мая 2012

Я знаю, что уже поздно в игре, но вот что я обычно настраиваю, когда приходится иметь дело с округлением до ближайшего nTh:

Number.prototype.roundTo = function(nTo) {
    nTo = nTo || 10;
    return Math.round(this * (1 / nTo) ) * nTo;
}
console.log("roundto ", (925.50).roundTo(100));

Number.prototype.ceilTo = function(nTo) {
    nTo = nTo || 10;
    return Math.ceil(this * (1 / nTo) ) * nTo;
}
console.log("ceilTo ", (925.50).ceilTo(100));

Number.prototype.floorTo = function(nTo) {
    nTo = nTo || 10;
    return Math.floor(this * (1 / nTo) ) * nTo;
}
console.log("floorTo ", (925.50).floorTo(100));

Я обнаружил, что использую Number.ceilTo (..), потому что я работаю с Canvas и пытаюсь определить, насколько далеко масштабироваться.

2 голосов
/ 25 февраля 2009

Это будет сделано, если вы используете целочисленную математику:

n = (n + 50) / 100 * 100

Конечно, вы не указали поведение, например, 1350 и 1450, поэтому я решил округлить. Если вам нужно округлить до четного, это не сработает.

0 голосов
/ 05 марта 2018

Согласно приведенному выше комментарию Павана Пиллая, округление до ближайшего сотого в Javascript:
100 * Math.floor((foo + 50) / 100);

0 голосов
/ 25 февраля 2009

Это домашняя работа?

Как правило, мод 100, а затем> 50 добавить еще вычесть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...