Как округлить целое число до ближайшего 10 с помощью Javascript

84

Используя Javascript, я хотел бы округлить число, переданное пользователем, до ближайшего 10. Например, если передано 7, я должен вернуть 10, если передано 33, я должен вернуть 30.

Abs
источник

Ответы:

164

Разделите число на 10, округлите результат и снова умножьте на 10:

var number = 33;
console.log(Math.round(number / 10) * 10);

Гамбо
источник
12
Этот метод также работает Math.floor, если вы хотите предотвратить округление вверх
Alex W
11
Вы можете использовать метод Math.ceil для округления.
Керем Демирер
20

где i int.

Чтобы округлить до ближайшего кратного 10, т.е.

11 становится 10
19 становится 10
21 становится 20

parseInt(i / 10, 10) * 10;

Чтобы округлить до ближайшего числа, кратного 10, т.е.

11 становится 20
19 становится 20
21 становится 30

parseInt(i / 10, 10) + 1 * 10;  
CMP
источник
4
Не должно быть: (parseInt (i / 10, 10) + 1) * 10; ?
user3924331 05
@ user3924331, вы правы. Правильный ответ: (parseInt (i / 10, 10) + 1) * 10; Изменения должны содержать не менее 6 символов, поэтому нельзя добавить только эти две круглые скобки ... ¯_ (ツ) _ / ¯
Фернандо
До ближайшего 10 прибавляет +10 к значению 100, поэтому оно становится 110. До ближайшего 10 не вычитает -10 для 100, поэтому 100 остается 100.
TitanFighter
6

Мне было нужно нечто подобное, поэтому я написал функцию. Я использовал функцию десятичного округления здесь , и с тех пор я использую его для целого закругления, обращу его в качестве ответа здесь. В этом случае просто введите число, которое вы хотите округлить, а затем 10 - число, до которого хотите округлить.

function roundToNearest(numToRound, numToRoundTo) {
    return Math.round(numToRound / numToRoundTo) * numToRoundTo;
}
Cjbarth
источник
Мне нравится, что вы превратили его в функцию, но дает ли это результат, отличный от принятого ответа, а если нет, то почему вы использовали другую формулу?
RozzA
Он возвращает то же значение, но формула отличается, потому что ее легче использовать. Например, если вы хотите округлить до ближайшего .25, вы можете просто использовать его .25в качестве второго аргумента. Если бы вы использовали формулы в других ответах, вам пришлось бы использовать 4в качестве второго аргумента, когда вы хотите округлить до .25, что противоречит интуиции.
cjbarth
ты можешь это доказать? Я только что провел некоторое тестирование в консоли, и принятый ответ возвращает правильный ответ, используя .25в качестве второго аргумента - я превратил его в функцию с одним лайнеромfunction roundTo(x,y){return Math.round(x / y) * y}
RozzA
@RozzA, ты прав. Я думал над ответами на другой похожий вопрос. Я упрощу свою функцию.
cjbarth 03