JavaScript: convertire correttamente le stringhe in numeri

JavaScript: convertire correttamente le stringhe in numeri

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:

  1. Se la stringa ha un formato con punto decimale, usa parseFloat().
  2. Se la stringa ha un formato intero, usa parseInt().
  3. Altrimenti esegue un tentativo con Number().

In ogni caso è sempre bene aggiungere un'ulteriore verifica usando la funzione isNaN().

Torna su