получить номер n цифры в 2+ цифре - PullRequest
6 голосов
/ 24 декабря 2010

Например, получить «5» в «256».Самый близкий, который я получил, - Math.floor (256/10), но он все равно вернет числа впередЕсть ли простой способ получить то, что я хочу, или мне нужно было бы сделать для него большую функцию?Также, для ясности: «n цифра» будет определена.Например, getDigit (2256) вернет 5 (вторая цифра)

Ответы [ 9 ]

11 голосов
/ 24 декабря 2010
Math.floor((256 / 10) % 10)

или в более общем случае:

Math.floor(N / (Math.pow(10, n)) % 10)

, где N - это число, которое нужно извлечь, а n - это позиция цифры.Обратите внимание, что это отсчитывается от 0, начиная справа (т. Е. Наименее значимая цифра = 0), и не учитывает недопустимые значения n.

11 голосов
/ 24 декабря 2010

как насчет

(12345 + "")[3] 

или

(12345 + "").charAt(3)

для подсчета с другого конца

[length of string - digit you want], поэтому если вы хотите 2, то это:

5 - 4 = 1 
(12345 + "")[1] = "2"


function getNumber (var num, var pos){
  var sNum = num + "";

  if(pos > sNum.length || pos <= 0){return "";}

  return sNum[sNum.length - pos]; 

}
6 голосов
/ 24 декабря 2010

Сначала вам нужно привести число к строке, затем вы можете получить доступ к символу как обычно:

var num = 256;
var char = num.toString()[1]; // get the 2nd (0-based index) character from the stringified version of num

Редактировать: Обратите внимание, что, если вы хотите получить доступ кесли сначала не установить число в качестве переменной, вам нужна двойная точка .. для доступа к функции:

var char = 256..toString()[1];

Первая точка говорит интерпретатору "это число";второй обращается к функции.

0 голосов
/ 03 сентября 2015

используйте переменную "count" для управления контуром

var count = 1; //starting 1
for(i=0; i<100; i++){
  console.log(count);
  if(i%10 == 0) count++;
}

выход заполнит 1 2 3 4 5 6 7 8 9

0 голосов
/ 24 декабря 2010

Если вы хотите попробовать все математически:

var number = 256;
var digitNum = 2;
var digit = ((int)(number/(Math.pow(10,digitNum-1))%10;

Этот код считает цифру справа, начинающуюся с 1, а не с 0. Если вы хотите изменить ее, чтобы она начиналась с 0, удалите часть -1 в вызове.

Если вы хотите посчитать слева, это становится более сложным и похожим на другие решения:

var number = 256;
var digitNum = 2;
var digit = ((int)(number/(Math.pow(10,number.tostring().length-digitNum))%10;

редактирование:

Кроме того, это предполагает, что вам нужна база 10 для вашей системы счисления, но обе они будут работать с другими базами. Все, что вам нужно сделать, - это заменить числа 10 в последней строке кода на число, представляющее основу для системы счисления, которую вы хотите использовать. (т.е. шестнадцатеричный = 16, двоичный = 2)

0 голосов
/ 24 декабря 2010
// You do not say if you allow decimal fractions or negative numbers- 
// the strings of those need adjusting.

Number.prototype.nthDigit= function(n){
    var s= String(this).replace(/\D+/g,'');
    if(s.length<=n) return null;
    return Number(s.charAt(n))
}
0 голосов
/ 24 декабря 2010

Попробуйте, последняя строка является ключевой:

var number = 12345;
var n = 2;
var nDigit = parseInt((number + '').substr(1,1));
0 голосов
/ 24 декабря 2010

Преобразовать в строку и подстроку (2,2)?

0 голосов
/ 24 декабря 2010

Это должно сделать это:

function getDigit ( position, number ) {
  number = number + ""; // convert number to string
  return number.substr ( position + 1, 1 ); // I'm adding 1 to position, since 0 is the position of the first character and so on
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...