Як округлити ціле число вгору або вниз до найближчих 10 за допомогою Javascript


84

За допомогою Javascript я хотів би округлити число, передане користувачем, з точністю до 10. Наприклад, якщо передано 7, я повинен повернути 10, якщо 33 передано, я повинен повернути 30.

Відповіді:


165

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

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


12
Цей прийом також працює, використовуючи Math.floor, якщо ви хочете запобігти округленню вгору
Alex W

11
Ви можете використовувати метод Math.ceil для округлення.
Kerem Demirer


21

Де 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;  

4
Чи не повинно бути: (parseInt (i / 10, 10) + 1) * 10; ?
user3924331

@ user3924331, ти маєш рацію. Правильна відповідь (parseInt (i / 10, 10) + 1) * 10; Редагування має містити принаймні 6 символів, тому неможливо додати лише ці два дужки ... ¯_ (ツ) _ / ¯
Фернандо

До найближчих 10 додає +10 для значення 100, тому воно стає 110. До найближчого 10 не віднімає -10 для 100, тому 100 залишається 100.
TitanFighter

7

Мені потрібно було щось подібне, тому я написав функцію. Я використовував функцію для десяткового округлення тут , і оскільки я також використовую її для цілочисельного округлення, я також встановлю її як відповідь тут. У цьому випадку просто введіть число, яке потрібно округлити, а потім 10 - число, яке потрібно округлити.

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

Мені подобається, що ви перетворили його на функцію, але чи дає це відмінний результат від прийнятої відповіді, і якщо ні, чому ви використовуєте іншу формулу?
RozzA

Він повертає одне і те ж значення, але формула інша, оскільки полегшує використання. Наприклад, якщо ви хочете округлити до найближчого .25, ви можете просто використовувати .25як другий аргумент. Якби ви використовували формули в інших відповідях, вам довелося б використовувати їх 4як другий аргумент, коли ви хочете округлити до .25, що є протиінтуїтивним.
cjbarth

ти можеш це довести? я щойно .25провів тестування в консолі, і прийнята відповідь повертає правильну відповідь, використовуючи як другий аргумент - я зробив це функцією з одним вкладишемfunction roundTo(x,y){return Math.round(x / y) * y}
RozzA

@RozzA, ти маєш рацію. Я думав про відповіді в іншому подібному питанні. Я спрощу свою функцію.
cjbarth
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.