Вступление
Управление данными - одна из фундаментальных концепций программирования. Преобразование числа в строку - обычная и простая операция. То же самое касается и другого способа преобразования String в число.
Преобразование строки в число
Как и в случае с показанными ранее методами, JavaScript также
предоставляет функции для простого преобразования String в примитивное
число. Это parseInt()
, parseFloat()
, Math.floor()
,
Math.ceil()
, Unary Operator / Multiply by 1
.
.parseInt()
принимает String в качестве первого аргумента и базу, в которую эта String будет преобразована. Этот метод всегда возвращает целое число..parseFloat()
принимает String в качестве аргумента и возвращает эквивалент числа с плавающей запятой.Math.floor()
используется для округления целого числа или числа с плавающей запятой. Возвращает ближайшее целое число, округленное в меньшую сторону.Math.ceil()
может использоваться для округления целого числа или числа с плавающей запятой.Unary Operator
Если добавить+
перед строкой, она будет преобразована в число, если соответствует правильному формату.Multiply by 1
Если строку умножить на примитивное число1
, строка станет числом.
.parseInt ()
Базу можно определить, добавив префиксы к числам, которые мы хотим проанализировать:
- Без префикса - если префикса нет, используется система счисления 10 (десятичная).
- 0 - Если префикс
0
, то система счисления 8 (восьмеричная). Хотя эта функция устарела. - 0x - Если префикс
0x
, то система счисления 16 (шестнадцатеричная).
Хотя мы можем просто добавить к вызову метода необязательный аргумент, определяющий базу:
let str = '353';
let fltStr = '353.56';
let binStr = '7';
let nanStr = 'hello';
parseInt(str); // 353
parseInt(fltStr); // 353
parseInt(binStr, 2); // 111 (Binary)
parseInt(nanStr); // NaN (Not a Number)
.parseFloat ()
let str = '100';
let fltStr = '100.21';
let nanStr = 'bye';
parseFloat(str); // 353
parseFloat(fltStr); // 353.21
parseFloat(nanStr); // NaN
Math.floor ()
Удивительно, но этот метод также может принимать строки, что делает его еще одним способом преобразования строки в целое число.
let str = '100';
let fltStr = '99.89';
let nanStr = 'bye';
Math.floor(str); // 100
Math.floor(fltStr); // 99
Math.floor(nanStr); // NaN
Math.ceil ()
Очень похож на предыдущий метод, хотя, на этот раз она возвращает ближайшее целое число округляется.
Метод может принимать строки, а также преобразовывать строку в число:
let str = '100';
let fltStr = '100.21';
let nanStr = 'bye';
Math.ceil(str); // 100
Math.ceil(fltStr); // 101
Math.ceil(nanStr); // NaN
Имейте в виду, что если вам нужно проанализировать числа с плавающей
запятой, то и Math.floor
и Math.ceil
, вероятно, не подходят,
поскольку они всегда будут преобразовывать строки в ближайший
целочисленный эквивалент.
Унарный оператор
Как и в случае объединения пустой строки, существует обходной путь, который обеспечивает лучшую производительность, но не обеспечивает удобочитаемости.
let str = '100';
let fltStr = '100.21';
let nanStr = 'greetings';
+str // 100
+fltStr // 100.21
+nanStr // NaN
+'1000' // 1000
+10.25 // 10.25
Несмотря на краткость и эффективность, это не очень известная функция JavaScript, поэтому ее не рекомендуется использовать, поскольку это может сделать ваш код не таким простым для понимания.
Умножение на 1
Этот подход, пожалуй, самый быстрый:
let str = '100';
let fltStr = '100.21';
let nanStr = 'greetings';
str * 1; // 100
fltStr * 1; // 100.21
nanStr * 1; // NaN
'2000' * 1; // 2000
'102.15' * 1; // 102.15
Предыдущие два подхода работают просто из-за того, что JavaScript пытается ассимилировать типы данных, используемые в операторе, таком как сложение или умножение.
Использование строковых и числовых объектов
Другой способ преобразования String в число или числа в String - это
создание нового объекта String или Number с ключевым словом new
// Number to String
let numToStr = new String(2); // String {'2'}
// String to Number
let strToNum = new Number('2'); // Number {2}
Однако такая практика не приветствуется . При использовании
примитивных данных методы объекта не должны использоваться для их
создания.
Создание экземпляра примитивного типа данных с помощью оболочки класса
String или Number приводит к проблемам с производительностью и памятью.
Заключение
Есть много действенных способов манипулирования данными. Программист должен решить, какой из них он предпочитает, выбирая производительность вместо удобочитаемости или баланс между ними.
Для получения дополнительной информации вы можете прочитать следующие ресурсы: