Назад к вопросам
Junior
75
questionbank

Как происходит преобразование строки в число в JavaScript?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

В JavaScript преобразование строки в число можно выполнить несколькими способами:

  • Неявное приведение типов:

    • Математические операторы: Например, унарный плюс + или вычитание -.
    // Неявное приведение с помощью унарного плюса
    let str = "123";
    let num = +str; // num = 123 (число)
    
    • Арифметические операции: При использовании арифметических операторов JavaScript попытается преобразовать операнды к числам.
    // Неявное приведение при вычитании
    let str1 = "10";
    let str2 = "5";
    let result = str1 - str2; // result = 5 (число)
    
  • Явное приведение типов:

    • parseInt(string, radix): Преобразует строку в целое число. Второй аргумент radix (основание системы счисления) рекомендуется указывать для избежания неожиданного поведения.
    // Явное приведение с parseInt
    let strInt = "42px";
    let numInt = parseInt(strInt, 10); // numInt = 42 (целое число)
    
    let strBinary = "101";
    let numBinary = parseInt(strBinary, 2); // numBinary = 5 (целое число)
    
    • parseFloat(string): Преобразует строку в число с плавающей точкой. Парсит строку до первого не-числового символа или точки.
    // Явное приведение с parseFloat
    let strFloat = "3.14abc";
    let numFloat = parseFloat(strFloat); // numFloat = 3.14 (число с плавающей точкой)
    
    • Number(value): Преобразует любое значение в число. Более строгий подход по сравнению с parseInt и parseFloat. Если строка не может быть полностью преобразована в число, возвращает NaN.
    // Явное приведение с Number
    let strNum = "123.45";
    let numFromNumber = Number(strNum); // numFromNumber = 123.45 (число)
    
    let strInvalid = "hello";
    let numInvalid = Number(strInvalid); // numInvalid = NaN
    

Различия и особенности:

Метод Описание Возвращает при невалидной строке Парсит с начала до первого не-числа
+string Неявное приведение с унарным плюсом. NaN Нет (вся строка)
string - 0 Неявное приведение с вычитанием. NaN Нет (вся строка)
parseInt() Парсит целое число. NaN Да
parseFloat() Парсит число с плавающей точкой. NaN Да
Number() Явное преобразование. Более строгое. NaN Нет (вся строка)

Выбор метода зависит от конкретной задачи и ожидаемого формата входной строки. Number() является предпочтительным для преобразования строк, представляющих собой целые или дробные числа без лишних символов. parseInt() и parseFloat() полезны для извлечения числовых значений из строк, содержащих дополнительные символы (например, единицы измерения). Неявное приведение стоит использовать с осторожностью, понимая его поведение.