Articolo originale: How to Convert a String to a Number in JavaScript

Ci sono molti modi pe convertire una stringa in un numero usando JavaScript. Ma qual è in codice nella pratica?

In questo articolo, ti mostrerò 11 modi per convertire una stringa in un numero.

Qui c'è uno Scrim interattivo su come convertire una stringa in un numero in JavaScript

Come convertire una stringa in un numero in JavaScript usando la funzione Number()

Un modo per convertire una stringa in un numero è utilizzare la funzione  Number() .

In questo esempio, abbiamo una stringa denominata  quantity con il valore "12".

const quantity = "12";

Se usiamo l'operatore typeof su  quantity, otteniamo come risultato il tipo stringa.

console.log(typeof quantity);
Image

Possiamo convertire quantity  in un numero utilizzando la funzione  Number  in questo modo:

Number(quantity)

Possiamo controllare come questa variabile sia ora un numero utilizzando l'operatore typeof nuovamente:

console.log(typeof Number(quantity));
Image

Se si prova a passare come argomento un valore che non può essere convertito in un numero, allora il valore risultante sarà NaN ("Not a Number", letteralmente "non un numero").

console.log(Number("awesome"));
Image

Come convertire una stringa in un numero in JavaScript usando la funzione parseInt()

Un altro modo per convertire una stringa in un numero è utilizzare la funzione parseInt(). Questa funzione prende come argomento una stringa e, opzionalmente, una radice.

Una radice è un numero tra 2 e 36 che rappresenta la base in un sistema numerico. Per esempio, una radice pari a 2 rappresenta il sistema binario, mentre la radice 10 rappresenta il sistema decimale.

Possiamo utilizzare la variabile quantity già usata in precedenza e convertirla in un numero:

const quantity = "12";

console.log(parseInt(quantity, 10));

Cosa succede se provo a cambiare la variabile quantity in "12.99"? Il risultato utilizzando parseInt() sarà il numero 12.99?

const quantity = "12.99";

console.log(parseInt(quantity, 10));
Image

Come puoi vedere, il risultato è un numero intero arrotondato. Se desideravi come risultato un numero in virgola mobile (floating point number), allora avresti dovuto utilizzare parseFloat().

Come convertire una stringa in un numero in JavaScript usando la funzione parseFloat()

La funzione parseFloat() prende come argomento un valore e restituisce come risultato un numero floating point. Esempi di numeri floating point sono 12.99 e 3.14.

Se modifichiamo il nostro esempio precedente per usare parseFloat(), il risultato sarà il numero floating point 12.99.

const quantity = "12.99";

console.log(parseFloat(quantity));
Image

Nel caso in cui fossero presenti spazi bianchi nella stringa prima o dopo il valore che deve essere convertito, la funzione parseFloat() effettuerà ugualmente la conversione.

const quantity = "   12.99    ";

console.log(parseFloat(quantity));
Image

Se il primo carattere nella stringa non può essere convertito in un numero, allora parseFloat()  restituirà NaN.

const quantity = "F12.99";

console.log(parseFloat(quantity));
Image

Come convertire una stringa in un numero in JavaScript usando l'operatore unario più (+)

L'operatore unario più  (+) convertirà una stringa in un numero. L'operatore deve essere posizionato prima dell'operando.

const quantity = "12";

console.log(+quantity);
Image

Possiamo anche usare l'operatore unario più (+)  per convertire una stringa in un numero floating point.

const quantity = "12.99";

console.log(+quantity);
Image

Se il valore della stringa non può essere convertito in un numero, allora il risultato sarà NaN.

const quantity = "awesome";

console.log(+quantity);
Image

Come convertire una stringa in un numero in JavaScript moltiplicando la stringa per il numero 1

Un altro modo per convertire una stringa in un numero è utilizzare una operazione matematica di base. Puoi moltiplicare il valore della stringa per 1 ed otterrai un numero.

const quantity = "12";

console.log(quantity * 1);
Image

Come puoi vedere, quando moltiplichiamo il valore di quantity per 1, il risultato è il numero 12. Ma come funziona?

In questo esempio, JavaScript ha convertito il nostro valore della stringa in un numero e quindi ha eseguito l'operazione matematica. Tuttavia se il valore contenuto nella stringa non può essere convertito, allora l'operazione matematica non può essere eseguita e il risultato sarà NaN.

const quantity = "awesome";

console.log(quantity * 1);
Image

Questo metodo funziona anche con i numeri floating point.

const quantity = "10.5";

console.log(quantity * 1);
Image

Come convertire una stringa in un numero in JavaScript dividendo la stringa per il numero 1

Invece di moltiplicare per 1, puoi anche dividere la stringa per 1. JavaScript convertirà il valore della nostra stringa in un numero e quindi eseguirà l'operazione matematica.

const quantity = "10.5";

console.log(quantity / 1);
Image

Come convertire una stringa in un numero in JavaScript sottraendo il numero 0 dalla stringa

Un ulteriore metodo è sottrarre 0 dalla stringa. Come prima, JavaScript convertirà il valore della nostra stringa in un numero ed eseguirà l'operazione matematica.

const quantity = "19";

console.log(quantity - 0);
Image

Come convertire una stringa in un numero in JavaScript utilizzando l'operatore NOT bit a bit (~)

L'operatore NOT bit a bit (~) inverte i bit di un operando e converte tale valore in un intero a 32 bit con segno. Un intero a 32 bit con segno è un valore che rappresenta un numero intero con 32 bit (equivalenti a 4 byte).

Se utilizziamo un operatore NOT bit a bit (~)  su un numero, questi eseguirà la seguente operazione: -(x + 1)

console.log(~19);
Image

Ma se utilizziamo due operatori NOT bit a bit  (~), allora convertiremo la nostra stringa in un numero:

const quantity = "19";

console.log(~~quantity);
Image

Questo metodo non funziona con i numeri floating point perchè il risultato sarà sempre un intero.

const quantity = "19.99";

console.log(~~quantity);
Image

Se provi ad usare questo metodo su un carattere non-numerico, il risultato sarà zero.

const quantity = "awesome";

console.log(~~quantity);
Image

Questo metodo ha dei limiti perchè inizierà a dare problemi per valori che sono considerati troppo grandi. È importante assicurarsi che il numero da convertire sia compreso tra i valori degli interi a 32 bit con segno (ovvero compreso tra -2.147.483.648 e +2.147.483.648).

const quantity = "2700000000";

console.log(~~quantity);
Image

Per saperne di più sull'operatore NOT bit a bit (~) , puoi fare riferimento alla seguente documentazione.

Come convertire una stringa in un numero in JavaScript usando la funzione Math.floor()

Un altro modo di convertire una stringa in un numero è utilizzando la funzione Math.floor() . Questa funzione arrotonda per difetto un numero all'intero più vicino.

const quantity = "13.4";

console.log(Math.floor(quantity));
Image

Come nei precedenti esempi, se proviamo ad usare un carattere non numerico, il risultato sarà  NaN.

const quantity = "awesome";

console.log(Math.floor(quantity));
Image

Come convertire una stringa in un numero in JavaScript usando la funzione Math.ceil()

La funzione Math.ceil()  arrotonda per eccesso un numero all'interno più vicino.

const quantity = "7.18";

console.log(Math.ceil(quantity));
Image

Come convertire una stringa in un numero in JavaScript usando la funzione Math.round()

La funzione  Math.round() arrotonda un numero all'intero più vicino.

Se abbiamo il valore di 6.3, la funzione  Math.round() restituirà il valore 6.

const quantity = "6.3";

console.log(Math.round(quantity));
Image

Ma se cambio tale valore a 6.5, allora la funzione Math.round() restituirà il valore 7.

const quantity = "6.5";

console.log(Math.round(quantity));
Image

Conclusioni

In questo articolo, ti ho mostrato 11 modi per convertire una stringa in un numero usando JavaScript.

Qui sono elencati gli 11 differenti metodi discussi nell'articolo:

  1. usare la funzione Number()
  2. usare la funzione parseInt()
  3. usare la funzione parseFloat()
  4. usare l'operatore unario più (+)
  5. moltiplicare la stringa per il numero 1
  6. dividere la stringa per il numero 1
  7. sottrarre il numero 0 dalla stringa
  8. usare l'operatore NOT bit a bit (~)
  9. usare la funzione Math.floor()
  10. usare la funzione Math.ceil()
  11. usare la funzione Math.round()

Spero che questo articolo ti sia piaciuto. Buona fortuna per il tuo viaggio nel mondo di JavaScript.