Sobes.tech
Junior

Come si converte una stringa in numero in JavaScript?

sobes.tech AI

Risposta dell'AI

In JavaScript, la conversione di una stringa in numero può essere eseguita in diversi modi:

  • Conversioni implicite di tipo:

    • Operatori matematici: ad esempio, l'unario + o la sottrazione -.
    // Conversione implicita con l'unario +
    let str = "123";
    let num = +str; // num = 123 (numero)
    
    • Operazioni aritmetiche: usando operatori aritmetici, JavaScript tenterà di convertire gli operandi in numeri.
    // Conversione implicita con sottrazione
    let str1 = "10";
    let str2 = "5";
    let result = str1 - str2; // result = 5 (numero)
    
  • Conversioni esplicite di tipo:

    • parseInt(string, radix): Converte una stringa in un intero. Si consiglia di specificare il secondo argomento radix (base del sistema numerico) per evitare comportamenti imprevisti.
    // Conversione con parseInt
    let strInt = "42px";
    let numInt = parseInt(strInt, 10); // numInt = 42 (intero)
    
    let strBinary = "101";
    let numBinary = parseInt(strBinary, 2); // numBinary = 5 (intero)
    
    • parseFloat(string): Converte una stringa in un numero a virgola mobile. Analizza la stringa fino al primo carattere non numerico o punto.
    // Conversione con parseFloat
    let strFloat = "3.14abc";
    let numFloat = parseFloat(strFloat); // numFloat = 3.14 (numero a virgola mobile)
    
    • Number(value): Converte qualsiasi valore in un numero. È un approccio più rigoroso rispetto a parseInt e parseFloat. Se la stringa non può essere completamente convertita in un numero, restituisce NaN.
    // Conversione con Number
    let strNum = "123.45";
    let numFromNumber = Number(strNum); // numFromNumber = 123.45 (numero)
    
    let strInvalid = "hello";
    let numInvalid = Number(strInvalid); // numInvalid = NaN
    

Differenze e caratteristiche:

Metodo Descrizione Restituisce NaN con stringa non valida Analizza dall'inizio fino al primo carattere non numerico
+string Conversione implicita con l'unario +. NaN No (tutta la stringa)
string - 0 Conversione implicita con sottrazione. NaN No (tutta la stringa)
parseInt() Analizza un intero. NaN
parseFloat() Analizza un numero a virgola mobile. NaN
Number() Conversione esplicita. Più rigorosa. NaN No (tutta la stringa)

La scelta del metodo dipende dal compito specifico e dal formato atteso della stringa di input. Number() è preferibile per convertire stringhe che rappresentano numeri interi o decimali senza caratteri extra. parseInt() e parseFloat() sono utili per estrarre valori numerici da stringhe contenenti simboli aggiuntivi (ad esempio, unità di misura). La conversione implicita deve essere usata con cautela, comprendendo il suo comportamento.