Sobes.tech
Junior

Jak se v JavaScriptu převádí řetězec na číslo?

sobes.tech AI

Odpověď od AI

Převod řetězce na číslo v JavaScriptu lze provést několika způsoby:

  • Nepřímý převod typu:

    • Matematické operátory: například unární plus + nebo odčítání -.
    // Nepřímý převod pomocí unárního plus
    let str = "123";
    let num = +str; // num = 123 (číslo)
    
    • Matematické operace: při použití matematických operátorů se JavaScript pokusí převést operandy na čísla.
    // Nepřímý převod pomocí odčítání
    let str1 = "10";
    let str2 = "5";
    let result = str1 - str2; // result = 5 (číslo)
    
  • Explicitní převod typu:

    • parseInt(string, radix): Převádí řetězec na celé číslo. Druhý argument radix (základ soustavy) se doporučuje uvádět, aby se předešlo neočekávanému chování.
    // Převod pomocí parseInt
    let strInt = "42px";
    let numInt = parseInt(strInt, 10); // numInt = 42 (celé číslo)
    
    let strBinary = "101";
    let numBinary = parseInt(strBinary, 2); // numBinary = 5 (celé číslo)
    
    • parseFloat(string): Převádí řetězec na desetinné číslo. Parsuje řetězec do prvního ne-číslicového znaku nebo tečky.
    // Převod pomocí parseFloat
    let strFloat = "3.14abc";
    let numFloat = parseFloat(strFloat); // numFloat = 3.14 (desetinné číslo)
    
    • Number(value): Převádí jakoukoli hodnotu na číslo. Je přísnější než parseInt a parseFloat. Pokud řetězec nelze úplně převést na číslo, vrací NaN.
    // Převod pomocí Number
    let strNum = "123.45";
    let numFromNumber = Number(strNum); // numFromNumber = 123.45 (číslo)
    
    let strInvalid = "hello";
    let numInvalid = Number(strInvalid); // numInvalid = NaN
    

Rozdíly a vlastnosti:

Metoda Popis Vrací při neplatném řetězci Parsuje od začátku do prvního ne-čísla
+string Nepřímý převod pomocí unárního +. NaN Ne (celý řetězec)
string - 0 Nepřímý převod pomocí odčítání. NaN Ne (celý řetězec)
parseInt() Parsuje celé číslo. NaN Ano
parseFloat() Parsuje desetinné číslo. NaN Ano
Number() Přímý převod. Přísnější. NaN Ne (celý řetězec)

Volba metody závisí na konkrétním úkolu a očekávaném formátu vstupního řetězce. Number() je preferovaná metoda pro převod řetězců představujících celé nebo desetinné čísla bez dalších znaků. parseInt() a parseFloat() jsou užitečné pro extrakci číselných hodnot z řetězců obsahujících doplňkové znaky (například jednotky měření). Nepřímý převod je třeba používat opatrně, s pochopením jeho chování.