Подтвердить что ты не робот

Округление до ближайшего 100

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

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

4b9b3361

Ответ 1

Для ввода n:

(n + 50) / 100 * 100

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

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

Ответ 2

Метод Ruby round может использовать отрицательные оценки:

n.round(-2)

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

Ответ 3

100 * round(n/100.0)

Ответ 4

Я знаю это в конце игры, но здесь я обычно устанавливаю, когда имею дело с необходимостью округлять вещи до ближайшего 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 и пытаюсь выяснить, насколько далеко от масштаба.

Ответ 5

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

n = (n + 50) / 100 * 100

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

Ответ 6

Это домашнее задание?

Как правило, mod 100, то if > 50 add else вычесть.