Получить позицию первого не 0 десятичного знака - PullRequest
1 голос
/ 11 октября 2019

Мне нужно найти позицию первой десятичной цифры, а не «0». Например,

a = 0.00056;

первая цифра, а не «0» после точки, равной 5, и искомая позиция - 4. Есть ли уже встроенная функция javascript или элегантный способ получить ее в javascript?

Просто для любопытства я сохраню значение 0,00001 в качестве шага в ползунке, максимальное значение которого равно переменной a.

Ответы [ 3 ]

3 голосов
/ 11 октября 2019

Вы можете взять логарифм десяти и взять значение с плавающей точкой.

var a = 0.00056,
    p = Math.floor(Math.log10(a));

console.log(p);
1 голос
/ 11 октября 2019

Просто добавьте другой способ, преобразовав его в строку и используя reg exp

a = 0.00056;
console.log(a.toString().match(/0\.(0*[^0])/)[1].length)
1 голос
/ 11 октября 2019

Вы можете сделать это с помощью строковых манипуляций или с чистыми числами.

Математический способ:

Math.floor(Math.abs(Math.log10(n))); // if n >= 0 && n < 1

let arr = [
  0.56,    // 0
  0.056,   // 1
  0.0056,  // 2
  0.00056, // 3
  0.000056 // 4
];

arr.forEach(a => {
  console.log(`n = ${a}, str = ${getFirstNonZeroStr(a)}, log = ${getFirstNonZeroLog(a)}`);
});

function getFirstNonZeroStr(n) {
  if (n >= 1) return -1;
  let s = n.toString();
  let m = s.match(/^0\.(0*)[\d]+$/);
  return m[1].length;
}

function getFirstNonZeroLog(n) {
  if (n >= 1) return -1;
  return Math.floor(Math.abs(Math.log10(n)));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...