@Dubrovin

Как в JS найти количество знаков после запятой?

Как найти количество знаков после запятой?
Например, для числа 0.2525 количество знаков после запятой равно 4, а для числа 10 количество знаков после запятой равно 0.
Нашёл пример .split( '.' ).pop().length но не работает с целыми числами.
  • Вопрос задан
  • 15841 просмотр
Решения вопроса 1
loktionov129
@loktionov129
Backend .NET Developer
const f = x => ( (x.toString().includes('.')) ? (x.toString().split('.').pop().length) : (0) );

f(123); // 0
f(123.456); // 3
Ответ написан
Пригласить эксперта
Ответы на вопрос 5
pterodaktil
@pterodaktil
js developer
const f = x => ~(x + '').indexOf('.') ? (x + '').split('.')[1].length : 0;
Ответ написан
Комментировать
NightmareZz
@NightmareZz
Нищий разработчик из Симферополя
function f(n) {
    n = (typeof n == 'string') ? n : n.toString();
    if (n.indexOf('e') !== -1) return parseInt(n.split('e')[1]) * -1;
    var separator = (1.1).toString().split('1')[1];
    var parts = n.split(separator);
    return parts.length > 1 ? parts[parts.length - 1].length : 0;
}
Ответ написан
Комментировать
function f(n){
  let i=0;
  if(n%1 != 0){
    do {
      n= n*10;
      i++;
    } while (n%1 != 0);
  }
  return i;
}

alert (f(1.232)); //3
alert (f(1.22466)); //5
alert (f(1)); //0
Ответ написан
Комментировать
dethain
@dethain
Верстальщик
const value = 555.23412
const length = value.toString().match(/\.(\d+)/)?.[1].length // 5
Ответ написан
Комментировать
@MiniGameNickName
const decimalPlaces = number => {
  if (number.toString().split(/[\.e]/).length === 1) return 0
  let result
  // @ts-ignore
  number.toString().replace(/[\.e]/, reg => {
    switch (reg) {
      case '.': {
        result = number.toString().split('.')[1].length
        return
      }
      case 'e': {
        result = Math.abs(number.toString().split('e')[1])
        return
      }}})
  return result
}
console.log(decimalPlaces(0.000000000000001)) // 15
console.log(decimalPlaces(17.41452)) // 5
console.log(decimalPlaces(10)) // 0
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы