Глиф Учебники

Как перевести строку в число

Справочник · JavaScript · 1 минута чтения

JavaScript
console.log(Number("42"));
console.log(Number("3.14"));
console.log(parseInt("42px", 10));
console.log(parseFloat("3.5 кг"));
console.log(+"7" + 1);
Вывод
42
3.14
42
3.5
8

Чем они отличаются

JavaScript
console.log(Number("12px"));
console.log(parseInt("12px", 10));
console.log(Number(""));
console.log(parseInt("", 10));
console.log(Number("  5  "));
console.log(parseInt("3.99", 10));
Вывод
NaN
12
0
NaN
5
3
СтрокаNumberparseInt(…, 10)parseFloat
"42"424242
"3.99"3.9933.99
"12px"NaN1212
""0NaNNaN
"abc"NaNNaNNaN

Выбор простой: для значения, которое должно быть числом целиком (поле ввода, данные из файла), — Number. Для строк вида "12px", где число стоит в начале, — parseInt или parseFloat.

Ловушка Number(""): пустая строка даёт 0, а не NaN. Если пользователь ничего не ввёл, а программа приняла это за ноль, проверяйте пустую строку отдельно.

Почему вместо сложения склеивается

Значение поля ввода (input.value), ответ prompt(), параметры из адреса страницы — всегда строки. + со строками склеивает:

JavaScript
const a = "2";
const b = "3";

console.log(a + b);
console.log(Number(a) + Number(b));
Вывод
23
5

Запятая вместо точки

В JavaScript дробная часть отделяется точкой. Число с запятой, как его привычно вводят по-русски, Number не поймёт, а parseFloat прочитает только до запятой:

JavaScript
const input = "3,75";

console.log(Number(input));
console.log(parseFloat(input));
console.log(Number(input.replace(",", ".")));
Вывод
NaN
3
3.75

Проверить, что получилось число

NaN не равен ничему, даже себе, поэтому x === NaN всегда false. Проверка — Number.isNaN:

JavaScript
const value = Number("abc");

if (Number.isNaN(value)) {
  console.log("Это не число");
}
Вывод
Это не число

Если важно, чтобы число было ещё и конечным (не Infinity), подойдёт Number.isFinite(value).

Обратно: число в строку

String(42), (42).toString() или шаблонная строка — все дают "42". Для вывода с нужным числом знаков после точки — toFixed, см. справку Как округлить число.