Как округлить число до ближайшего 100/1000 в зависимости от числа в JavaScript?
У меня есть число, которое может быть в 2 цифры, как 67, 24, 82, или в 3 цифры, как 556, 955, 865 или 4 цифры и так далее. Как округлить число до ближайших N + 1 цифр в зависимости от числа?
пример:
roundup(87) => 100,
roundup(776) => 1000,
roudnup(2333) => 10000
и так далее.
5 ответов
вы можете взять логарифм десяти и округлить значение для получения значения.
function roundup(v) {
return Math.pow(10, Math.ceil(Math.log10(v)));
}
console.log(roundup(87)); // 100
console.log(roundup(776)); // 1000
console.log(roundup(2333)); // 10000
для отрицательных чисел вы можете сохранить знак, приняв результат проверки как фактор или принять отрицательный. Тогда необходимо абсолютное значение, потому что логарифм работает только с положительными числами.
function roundup(v) {
return (v >= 0 || -1) * Math.pow(10, 1 + Math.floor(Math.log10(Math.abs(v))));
}
console.log(roundup(87)); // 100
console.log(roundup(-87)); // -100
console.log(roundup(776)); // 1000
console.log(roundup(-776)); // -1000
console.log(roundup(2333)); // 10000
console.log(roundup(-2333)); // -10000
вы можете проверить, сколько цифр в номер и использовать возведение в степень:
const roundup = num => 10 ** String(num).length;
console.log(roundup(87));
console.log(roundup(776));
console.log(roundup(2333));
можно использовать String#repeat
в сочетании с Number#toString
для того, чтобы достичь этого :
const roundUp = number => +('1'+'0'.repeat(number.toString().length));
console.log(roundUp(30));
console.log(roundUp(300));
console.log(roundUp(3000));
//Math.pow(10,(value+"").length)
console.log(Math.pow(10,(525+"").length))
console.log(Math.pow(10,(5255+"").length))
Я придумал другое решение, которое не требует создания новой функции