Sobes.tech
Junior

Cum se convertește un șir într-un număr în JavaScript?

sobes.tech AI

Răspuns de la AI

În JavaScript, conversia unui șir de caractere în număr poate fi realizată în mai multe moduri:

  • Conversii implicite de tip:

    • Operatori matematici: de exemplu, plusul unar + sau scăderea -.
    // Conversie implicită cu plusul unar
    let str = "123";
    let num = +str; // num = 123 (număr)
    
    • Operații aritmetice: folosind operatori aritmetici, JavaScript va încerca să convertească operanzii în numere.
    // Conversie implicită cu scădere
    let str1 = "10";
    let str2 = "5";
    let result = str1 - str2; // result = 5 (număr)
    
  • Conversii explicite de tip:

    • parseInt(string, radix): Convertește un șir într-un număr întreg. Se recomandă specificarea celui de-al doilea argument radix (baza sistemului numeric) pentru a evita comportamente neașteptate.
    // Conversie cu parseInt
    let strInt = "42px";
    let numInt = parseInt(strInt, 10); // numInt = 42 (număr întreg)
    
    let strBinary = "101";
    let numBinary = parseInt(strBinary, 2); // numBinary = 5 (număr întreg)
    
    • parseFloat(string): Convertește un șir într-un număr cu virgulă mobilă. Analizează șirul până la primul caracter non-numeric sau punct.
    // Conversie cu parseFloat
    let strFloat = "3.14abc";
    let numFloat = parseFloat(strFloat); // numFloat = 3.14 (număr cu virgulă mobilă)
    
    • Number(value): Convertește orice valoare într-un număr. Este o abordare mai strictă comparativ cu parseInt și parseFloat. Dacă șirul nu poate fi complet convertit în număr, returnează NaN.
    // Conversie cu Number
    let strNum = "123.45";
    let numFromNumber = Number(strNum); // numFromNumber = 123.45 (număr)
    

Diferențe și caracteristici:

Metodă Descriere Returnează NaN pentru șir invalid Analizează de la început până la primul caracter non-numeric
+string Conversie implicită cu plusul unar. NaN Nu (toată șirul)
string - 0 Conversie implicită cu scădere. NaN Nu (toată șirul)
parseInt() Analizează un număr întreg. NaN Da
parseFloat() Analizează un număr cu virgulă mobilă. NaN Da
Number() Conversie explicită. Mai strictă. NaN Nu (toată șirul)

Alegerea metodei depinde de sarcina specifică și de formatul așteptat al șirului de intrare. Number() este preferat pentru conversia șirurilor care reprezintă numere întregi sau zecimale fără caractere suplimentare. parseInt() și parseFloat() sunt utile pentru extragerea valorilor numerice din șiruri care conțin simboluri suplimentare (de exemplu, unități de măsură). Conversia implicită trebuie utilizată cu precauție, înțelegând comportamentul său.