Sobes.tech
Junior

Jak w JavaScript zamienia się ciąg na liczbę?

sobes.tech AI

Odpowiedź od AI

W JavaScript konwersję ciągu na liczbę można wykonać na kilka sposobów:

  • Domyślne konwersje typów:

    • Operatory matematyczne: na przykład unary plus + lub odejmowanie -.
    // Domyślna konwersja za pomocą unary plus
    let str = "123";
    let num = +str; // num = 123 (liczba)
    
    • Operacje arytmetyczne: przy użyciu operatorów arytmetycznych JavaScript spróbuje przekonwertować operandy na liczby.
    // Domyślna konwersja przy odejmowaniu
    let str1 = "10";
    let str2 = "5";
    let result = str1 - str2; // result = 5 (liczba)
    
  • Jawne konwersje typów:

    • parseInt(string, radix): Konwertuje ciąg na liczbę całkowitą. Zaleca się podanie drugiego argumentu radix (podstawa systemu liczbowego), aby uniknąć nieoczekiwanych zachowań.
    // Konwersja za pomocą parseInt
    let strInt = "42px";
    let numInt = parseInt(strInt, 10); // numInt = 42 (liczba całkowita)
    
    let strBinary = "101";
    let numBinary = parseInt(strBinary, 2); // numBinary = 5 (liczba całkowita)
    
    • parseFloat(string): Konwertuje ciąg na liczbę zmiennoprzecinkową. Parsuje ciąg do pierwszego nie-liczbowego znaku lub kropki.
    // Konwersja za pomocą parseFloat
    let strFloat = "3.14abc";
    let numFloat = parseFloat(strFloat); // numFloat = 3.14 (liczba zmiennoprzecinkowa)
    
    • Number(value): Konwertuje dowolną wartość na liczbę. Jest to bardziej rygorystyczne podejście w porównaniu do parseInt i parseFloat. Jeśli ciąg nie może zostać w pełni przekonwertowany na liczbę, zwraca NaN.
    // Konwersja za pomocą Number
    let strNum = "123.45";
    let numFromNumber = Number(strNum); // numFromNumber = 123.45 (liczba)
    
    let strInvalid = "hello";
    let numInvalid = Number(strInvalid); // numInvalid = NaN
    

Różnice i cechy:

Metoda Opis Zwraca NaN dla nieprawidłowego ciągu Analizuje od początku do pierwszego nie-liczbowego znaku
+string Domyślna konwersja z unarnym plus. NaN Nie (cały ciąg)
string - 0 Domyślna konwersja przy odejmowaniu. NaN Nie (cały ciąg)
parseInt() Analiza liczby całkowitej. NaN Tak
parseFloat() Analiza liczby zmiennoprzecinkowej. NaN Tak
Number() Jawna konwersja. Bardziej rygorystyczna. NaN Nie (cały ciąg)

Wybór metody zależy od konkretnego zadania i oczekiwanego formatu wejściowego ciągu. Number() jest preferowany do konwersji ciągów reprezentujących liczby całkowite lub dziesiętne bez dodatkowych znaków. parseInt() i parseFloat() są przydatne do wyodrębniania wartości liczbowych z ciągów zawierających dodatkowe symbole (np. jednostki miary). Konwersje domyślne należy stosować ostrożnie, rozumiejąc ich zachowanie.