Convertire stringhe JavaScript numeriche in numeri effettivi è un compito fondamentale quando si eseguono operazioni matematiche. Affidarsi al casting implicito di JavaScript può infatti portare a risultati inattesi.
Possiamo usare la seguente funzione di utility:
function convertNumber( str ) {
var num;
if( /^[-+]?[0-9]+\.[0-9]+$/.test( str ) ) {
num = parseFloat( str );
} else if( /^\d+$/.test( str ) ) {
num = parseInt( str );
} else {
num = Number( str );
}
return num;
}
La funzione esegue le seguenti verifiche:
- Se la stringa ha un formato con punto decimale, usa
parseFloat()
. - Se la stringa ha un formato intero, usa
parseInt()
. - Altrimenti esegue un tentativo con
Number()
.
In ogni caso è sempre bene aggiungere un'ulteriore verifica usando la funzione isNaN()
.