ottenere il numero di n cifre in un numero di cifre 2+
-
12-10-2019 - |
Domanda
Per esempio, ricevendo "5" in "256". Il più vicino che ho ottenuto è Math.floor (256/10)), ma che sarà ancora tornare i numeri di fronte. C'è un modo semplice per ottenere ciò che desidera o avrei dovuto fare una grande funzione per esso? Inoltre, per chiarezza: "n cifre" sarebbe definita. Esempio, getDigit (2.256) restituirebbe 5 (seconda cifra)
Soluzione
Math.floor((256 / 10) % 10)
o più in generale:
Math.floor(N / (Math.pow(10, n)) % 10)
dove N
è il numero da estrarre, ed n
è la posizione della cifra. Si noti che questo conta da 0 a partire da destra (vale a dire, la cifra meno significativa = 0), e non tiene conto di valori non validi di n
.
Altri suggerimenti
come su
(12345 + "")[3]
o
(12345 + "").charAt(3)
a contare dall'altra estremità
[length of string - digit you want]
quindi se si desidera che il 2 di essa la:
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];
}
In primo luogo, è necessario esprimere il numero in una stringa, allora è possibile accedere al carattere come normale:
var num = 256;
var char = num.toString()[1]; // get the 2nd (0-based index) character from the stringified version of num
Modifica Si noti anche che, se si vuole accedervi senza impostare il numero come una variabile prima, è necessario un punto ..
doppia Per accedere alla funzione:
var char = 256..toString()[1];
Il primo punto dice l'interprete "questo è un numero"; il secondo di accedere alla funzione.
Converti in corda e substring (2,2)?
Questo dovrebbe farlo:
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
}
Prova questo, ultima riga è la chiave:
var number = 12345;
var n = 2;
var nDigit = parseInt((number + '').substr(1,1));
Se si vuole cercare di fare tutto matematicamente:
var number = 256;
var digitNum = 2;
var digit = ((int)(number/(Math.pow(10,digitNum-1))%10;
Questo codice conta la cifra dalla partenza destra con 1, non 0. Se si desidera cambiare per avviare a 0, eliminare il -1 parte nella chiamata.
Se si desidera contare da sinistra, diventa più complicato e simile ad altre soluzioni:
var number = 256;
var digitNum = 2;
var digit = ((int)(number/(Math.pow(10,number.tostring().length-digitNum))%10;
modifica:
Inoltre, questo presuppone che si desidera in base 10 per il sistema di numerazione, ma sia di quelli lavorerà con altre basi. Tutto quello che devi fare è istanze variazione del 10 nella riga finale di codice per il numero che rappresenta la base per il sistema di numero che si desidera utilizzare. (Es. Esadecimale = 16, binario = 2)
// 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))
}
uso variabile "conteggio" per loop di controllo
var count = 1; //starting 1
for(i=0; i<100; i++){
console.log(count);
if(i%10 == 0) count++;
}
uscita riempirà 1 2 3 4 5 6 7 8 9