Нахождение количества цифр в JavaScript

Я пытаюсь получить количество цифр числа в javascript, но я сталкиваюсь с некоторыми крайними случаями с уравнениями, которые я нашел в Интернете.

Вот что я использую с этого сайта.

getNumDigits(val){
  return val === 0 ? 1 : Math.floor(Math.log(Math.abs(val)) / Math.LN10 + 1);
}

Но проблема в том, что если вы введете число, подобное 1000, вы каким-то образом получите ошибку округления javascript, когда значение получится как 3.999997

Я заметил, что, пока ваш номер не между -1 и 1, вы можете просто добавить 1 в val в Math.abs(val), и он соответствующим образом установит количество цифр, но это только кажется грязным.

Я пытался просто конвертировать val в строку, и получить длину, но это не работает в случае, скажем, десятичного числа, когда вы используете что-то вроде 0.2 - как будет сказано длина 3.

Какое хорошее уравнение / функцию использовать?

1 ответ

Решение

Создание числа в виде строки и использование регулярного выражения для подсчета только цифр может работать.

function getNumDigits(val) {
  return (`${val}`.match(/\d/g) || []).length
}

console.log(getNumDigits(2.5245234))

Другие вопросы по тегам