Cosa significa effettivamente radix? Perchè ne abbiamo bisogno?
parseInt(10, radixValue);
Cosa significa effettivamente radix? Perchè ne abbiamo bisogno?
parseInt(10, radixValue);
Risposte:
Potresti non voler sempre analizzare l'intero in un numero in base 10, quindi fornire la radice ti consente di specificare altri sistemi numerici.
La radice è il numero di valori per una singola cifra. Esidecimale sarebbe 16. Octal sarebbe 8, Binary sarebbe 2 e così via ...
Nella parseInt()
funzione, ci sono diverse cose che puoi fare per suggerire la radice senza fornirla. Questi possono anche funzionare contro di te se l'utente sta inserendo una stringa che corrisponde a una delle regole ma non lo intende espressamente. Per esempio:
// Numbers with a leading 0 used a radix of 8 (octal) before ECMAScript 5.
// These days, browsers will treat '0101' as decimal.
var result = parseInt('0101');
// Numbers that start with 0x use a radix of 16 (hexidecimal)
var result = parseInt('0x0101');
// Numbers starting with anything else assumes a radix of 10
var result = parseInt('101');
// Or you can specify the radix, in this case 2 (binary)
var result = parseInt('0101', 2);
parseInt('0101')
ora ritorna 101
. Tuttavia, browser diversi possono avere un comportamento diverso. Includere sempre la radice per risultati affidabili.
parseInt(x, 0)
per qualche motivo che non ricordo in questo momento .. è uguale a parseInt(x, 10)
me lo chiedo ora ...
Perché se hai un numero di stringa simile 0700
e vuoi che l'output sia intero 700
devi informare parseInt()
che è un numero decimale anziché ottale.
console.log(parseInt("0700"));
// 448
// I really wanted decimal (base 10)
console.log(parseInt("0700", 10));
// 700
// What is this? Binary, Decimal, Octal?
console.log(parseInt("0110"));
// 72
// as binary
console.log(parseInt("0110", 2));
// 6
0o
invece di0
Radix è la base di un sistema di numerazione. Esistono un numero infinito di sistemi numerici ma quelli con cui la maggior parte delle persone ha familiarità sono la base 10 (decimale) e la base 2 (binario).
I valori numerici possono essere interpretati in modo diverso in basi diverse. Ad esempio, il numero 10 in binario può essere rappresentato come 2 in decimale.
Nel caso di parseInt()
, la radice consente di specificare la base da utilizzare. Per impostazione predefinita, viene utilizzata una radice di 10.
Tuttavia, la radice dovrebbe essere sempre specificata, anche quando si usa la base 10. Considerare il caso di
parseInt("010")
// Restituisce 8
A prima vista, potresti aspettarti che l'istruzione ritorni 10. L'uso esplicito della radice aiuterà a evitare confusione:
parseInt("010", 10)
// Restituisce: 10
La radice è il numero di base del sistema numerico: http://en.wikipedia.org/wiki/Radix
Normalmente, devi solo specificare la radice se vuoi che sia diversa da 10. Più specificamente (da http://www.w3schools.com/jsref/jsref_parseInt.asp ):
Se il parametro radix viene omesso, JavaScript presuppone quanto segue:
Se la stringa inizia con "0x", la radice è 16 (esadecimale) Se la stringa inizia con "0", la radice è 8 (ottale). Questa funzioneè deprecata Se la stringa inizia con qualsiasi altro valore, la radice è 10 (decimale)
Basta aggiungere alcune informazioni aggiuntive che rispondono chiaramente alla domanda:
Se radix è undefined o 0 (o assente), JavaScript assume quanto segue:
Fonte: MDN parseInt ()
È solo una mia opinione, ma l'idea che "dobbiamo usare radix" diventa rapidamente obsoleta. Il problema era davvero reale qualche tempo fa perché le persone al di fuori del mondo IT di solito non usano notazioni numeriche diverse da quelle decimali e molto spesso forniscono numeri decimali con riempimento a zero come "010". Ma poiché i numeri ottali ECMAScript 6 in JS sono preceduti da "0o" e non solo da "0" come era in ECMAScript 5 e 3. Quindi se non scegli come target la famiglia IE (questa non è una situazione rara ora) puoi saltare radix sicuro.
Il parametro radice viene utilizzato per specificare quale sistema numerico utilizzare, ad esempio, una radice di 16 (esadecimale) indica che il numero nella stringa deve essere analizzato da un numero esadecimale a un numero decimale.
Se il parametro radix viene omesso, JavaScript presuppone quanto segue:
Se la stringa inizia con "0x", la radice è 16 (esadecimale)
Se la stringa inizia con "0", la radice è 8 (ottale). Questa funzionalità è obsoleta
Se la stringa inizia con un altro valore, la radice è 10 (decimale)
Fonte W3Schools
Cos'è radix in paseInt ()?
La parseInt()
funzione analizza una stringa e restituisce un numero intero. Richiede un secondo argomento per la radice , che specifica la base del numero nella stringa . La radice può essere un numero intero compreso tra 2
e 36
.
La chiamata alla funzione è simile a (Sintassi):
parseInt(string, radix);
Alcuni esempi per chiarire il concetto di radix
Esempio 1:
var a = parseInt("11", 2);
La variabile radix dice che "11" è nel sistema binario, o in base 2 . Pertanto, questo esempio converte la stringa "11" in un numero intero 3.
Esempio 2:
var a = parseInt("10011", 16);
Qui la radice dice parseInt()
che 10011
è un numero esadecimale e quindi in numero intero, viene convertito in65553
Fondamentalmente, per farla breve, l' argomento radix dice parseInt()
che la stringa passata come primo parametro è di un particolare sistema (binario, esadecimale, ecc.) E deve essere convertito in un numero intero come prodotto finale.