/
Вопросы и ответы
/
JavaScript
/

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

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

4 года назад

Nikolai Gagarinov

Ответы

19

Например, так:

1
2
const str = '123';
const numb = Number(str); // число 123

Другой способ: с помощью унарного оператора "+"

1
const numb = +str; // число 123

С помощью функции parseInt():

1
const numb = parseInt(str); // число 123

Функция parseInt() преобразует строку в число и возвращает целочисленное значение. Если строка начинается с нечисловых символов, то parseInt() игнорирует их и считывает только числовую часть. Если же строка не содержит чисел, то parseInt() вернет NaN.

Например:

1
2
3
console.log(parseInt('123')); // 123
console.log(parseInt('123px')); // 123
console.log(parseInt('abc')); // NaN

4 года назад

Aleksey

1

Для преобразования дробных чисел есть похожая функция parseFloat

2 года назад

Tameet Anoira

0

Добрый день, есть вопрос. через prompt() получаем от пользователя две строки "11,1" и допустим "12,1". Как получить из этих строк числа, если js при попытке преобразовать эти строки в числа выдает NaN, а нам нужно получить в итоге цифру 23.2

2 года назад

0

Строку переводят в число через Number(), унарный плюс, parseInt() или parseFloat():

1
2
3
4
Number('42');       // 42
+'42';              // 42
parseInt('42', 10); // 42
parseFloat('3.14'); // 3.14

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

СтрокаNumber() и +parseInt(s, 10)parseFloat(s)
'42'424242
'3.14'3.1433.14
'12px'NaN1212
'px12'NaNNaNNaN
''0NaNNaN
' 7 '777
'1e3'100011000

Number() требует, чтобы вся строка была числом. parseInt и parseFloat читают цифры с начала строки и останавливаются на первом лишнем символе. Для ввода пользователя подходит Number(): строку '12abc' он не примет за 12.

Второй аргумент parseInt — система счисления. Без него parseInt('0x1A') вернёт 26: строку посчитают шестнадцатеричной.

Пустая строка превращается в 0

1
2
Number('');   // 0
Number(' ');  // 0

Если поле формы пустое, Number() вернёт 0, и ошибки не будет. Проверяйте пустую строку отдельно:

1
2
const value = input.value.trim();
const num = value === '' ? null : Number(value);

Дробное число с запятой

Пользователи вводят 11,1, а JavaScript понимает только точку:

1
2
Number('11,1');                    // NaN
Number('11,1'.replace(',', '.'));  // 11.1

Для двух чисел из prompt():

1
2
3
const a = Number(prompt('Первое число').replace(',', '.'));
const b = Number(prompt('Второе число').replace(',', '.'));
console.log(a + b); // 23.2 для «11,1» и «12,1»

Если в результате видно 23.200000000000003, округлите при выводе: (a + b).toFixed(1). toFixed возвращает строку.

Пробелы между разрядами

1
2
Number('1 000 000');                    // NaN
Number('1 000 000'.replace(/\s/g, '')); // 1000000

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

1
2
3
const n = Number('abc');
Number.isNaN(n);    // true
Number.isFinite(n); // false

Number.isFinite отсеивает и NaN, и Infinity.

Большие целые числа

Числа больше 2^53 теряют точность. Для них есть BigInt:

1
BigInt('9007199254740993'); // 9007199254740993n

Число обратно в строку

1
2
3
String(42);     // '42'
(42).toString(); // '42'
`${42}`;         // '42'

Типы данных и их преобразование разбирают в бесплатном курсе «Основы JavaScript».

25 дней назад

Никита Вихров

+7 800 100 22 47

бесплатно по РФ

+7 495 085 21 62

бесплатно по Москве

108813 г. Москва, вн.тер.г. поселение Московский,
г. Московский, ул. Солнечная, д. 3А, стр. 1, помещ. 20Б/3
ОГРН 1217300010476
ИНН 7325174845