La funzione parseFloat() di Javascript
La funzione parseFloat() del linguaggio Javascript mi consente di trasformare una stringa in un numero a virgola mobile (floating point number).
parseFloat(x)
L'argomento x della funzione è una stringa oppure una variabile alfanumerica.
La funzione parseFloat() converte la stringa in un valore numerico in virgola mobile (numero decimale).
Ad esempio, in questo script uso la funzione parseFloat() per convertire la variabile myVar che contiene la stringa "12.5" in un numero intero (12.5).
myVar = "12.5";
myVar = parseFloat(myVar);
document.write(myVar+4);
In questo modo Javascript può sommare i due valori numerici 12.5+4 restituendo in uscita il numero 16.5
16.5
Senza la conversione della variabile myVar in un tipo numerico (float) l'interprete avrebbe effettuato una concatenazione tra stringhe.
La funzione parseInt è una funzione di casting del linguaggio javascript.
Cosa accade se la stringa contiene anche delle lettere oltre ai numeri?
Il risultato dipende dalla posizione dei numeri.
Se i numeri si trovano prima delle lettere, Javascript converte la parte numerica iniziale in un numero.
Ad esempio
myVar = "12.5abc345";
myVar = parseFloat(myVar);
document.write(myVar);
Quando Javascript incontra il primo carattere non numerico considera concluso il numero.
In questo caso, qualsiasi carattere dopo la lettera "a" anche se è un carattere numerico (es. 345) viene ignorato dall'interprete Javascript.
Il risultato in output è un valore numerico in virgola mobile
12.5
Viceversa, se i numeri si trovano dopo una lettera, Javascript restituisce un errore
myVar = "abc12.5";
myVar = parseFloat(myVar);
document.write(myVar);
Il risultato in output è NaN (Not a Number)
NaN
Per evitare gli errori NaN c'è un'apposita funzione in Javascript che mi permette di verificare se una stringa è convertibile in numero oppure no.
E' la funzione isNaN(x)
isNaN("abc12.5")
La funzione restituisce true se la stringa x non è convertibile oppure false se è convertibile in un numero.
In questo caso restituisce false.
false
E così via.