Назад к вопросам
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() полезны для извлечения числовых значений из строк, содержащих дополнительные символы (например, единицы измерения). Неявное приведение стоит использовать с осторожностью, понимая его поведение.