2011-01-11 4 views

risposta

19

Uso 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

si potrebbe convertire il numero in una stringa e fare la stessa cosa:

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

2

Se si desidera un metodo esistente, convertirlo in una stringa e usa charAt.

Se si desidera un metodo che eviti di convertirlo in una stringa, è possibile giocare ripetutamente per 10 volte per rimuovere un numero sufficiente di cifre dalla destra, ad esempio 123456789, se si desidera il 3 ° da destra digit (6), dividi per 10 3 volte producendo 123456, quindi prendi il risultato mod 10 ottenendo 6. Se vuoi iniziare a contare cifre da sinistra, cosa che probabilmente fai, allora devi sapere quante cifre (base 10) sono nel numero intero, che è possibile dedurre dalla base del registro 10 del numero ... È improbabile che tutto ciò sia più efficace della semplice conversione in stringa.

4

È una soluzione stupida ma sembra funzionare senza conversione in stringa.

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

Questo è un bel modo succinto di esprimere in codice ciò che ho suggerito in un'altra risposta: http://stackoverflow.com/questions/4654715/how-do-i-select-the-nth-digit-in-a-arge- integer-inside-javascript/4654765 # 4654765 - ma come nella mia descrizione in prosa, "pos" sta contando le posizioni da destra. Dovresti sottrarre pos dalla base di log 10 del numero per contare da sinistra, che è ciò che è previsto qui. – 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 

un po 'confuso.

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

calcola il numero di cifre (-1) nel numero.

0

in 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 */