2011-01-11 11 views

Odpowiedz

19

Zastosowanie String():

var number = 132943154134; 

// convert number to a string, then extract the first digit 
var one = String(number).charAt(0); 

// convert the first digit back to an integer 
var one_as_number = Number(one); 
2

Można konwertować liczby na ciąg znaków i zrobić to samo:

parseInt((number + '').charAt(0))

2

Jeśli chcesz istniejącą metodę konwertowania go na ciąg i użyj charAt.

Jeśli chcesz zastosować metodę, która unika konwersji na ciąg, możesz grać w gry z dziesięciokrotnym podzieleniem, aby usunąć wystarczającą liczbę cyfr z prawej strony - powiedzmy 123456789, jeśli chcesz, aby trzecia z prawej cyfra (6), dziel przez 10 3 razy dając 123456, a następnie podejmij wynik mod 10 dając 6. Jeśli chcesz zacząć odliczanie cyfr od lewej, co prawdopodobnie robisz, musisz wiedzieć, ile cyfr (podstawa 10) znajdują się w całej liczbie, którą można wydedukować z bazy logów 10 liczby ... Wszystko to raczej nie będzie bardziej wydajne niż konwersja do ciągu znaków.

4

To głupie rozwiązanie, ale wydaje się działać bez konwersji na ciąg.

var number = 123456789; 
var pos = 4; 
var digit = ~~(number/Math.pow(10,pos))- ~~(number/Math.pow(10,pos+1))*10; 
+0

To miły, zwięzły sposób wyrażania w kodzie tego, co zasugerowałem w innej odpowiedzi - http://stackoverflow.com/questions/4654715/how-do-i-select-the-nth-digit-in-a-plge-- integer-inside-javascript/4654765 # 4654765 - ale jak w moim opisie prozy, "pos" liczy pozycje od prawej. Aby odliczyć od lewej, odejmij pozycję od bazy logów 10, co jest oczekiwane. – metamatt

0
var num = 123456; 
var secondChar = num.toString()[1]; //get the second character 
1
function digitAt(val, index) { 
    return Math.floor(
    (
     val/Math.pow(10, Math.floor(Math.log(Math.abs(val))/Math.LN10)-index) 
    ) 
    % 10 
); 
}; 

digitAt(123456789, 0) // => 1 
digitAt(123456789, 3) // => 4 

Nieco brudny.

Math.floor(Math.log(Math.abs(val))/Math.LN10) 

Oblicza liczbę cyfr (-1) w liczbie.

0

w jQuery

var number = 123456789 

function return_digit(n){ 
    r = number.toString().split('')[n-1]*1; 
    return r; 
} 

return_digit(3); /* returns 3 */ 
return_digit(6); /* returns 6 */ 
Powiązane problemy