В JavaScript существуют 2 встроенные функции для преобразования строк в числа: parseFloat() и parseInt().
parseFloat() принимает аргументом строку, которую необходимо привести к численному типу, и возвращает число типа float. Число должно содержаться в начале строки. Если после числа в строке идут ещё какие-то символы, то они отсекаются. Дробная часть числа должна быть записана через точку (запятая не воспринимается как разделитель). В случае, если parseFloat() не может преобразовать строку, то она возвращает NaN.
Также функция может обработать «число n, умноженное на 10 в степени x», которое в программировании принято записывать через букву E, например: 0.5E6 или 0.5E+6. Степень может быть также отрицательная: 0.5E-6, что равно 0.5*10^-6 или 0.5/1000000.
parseFloat(''3.78kg'') // 3.78 parseFloat(''kg33'') // NaN parseFloat(''0004.111'') // 4.111 parseFloat(''0x66'') // 0 parseFloat(''.5'') // 0.5 parseFloat(''-.5'') // -0.5 parseFloat(''0.5e6'') // 500000 parseFloat(''0.03E+2'') // 3 parseFloat(''3E-4'') // 0.0003 parseFloat(''-3E-4'') // -0.0003
Функция parseInt(string[, radix]) принимает в качестве первого аргумента строку, анализирует её и возвращает целое число (тип integer). Функция пытается анализировать систему счисления, в которой записано число в исходной строке (например, десятичная, восьмеричная или шестнадцатеричная — но не только эти). Также систему счисления можно указать явно, передав её вторым параметром radix. Параметр radix может принимать любое число от 2 до 36 (в системах выше 10-й используются буквы английского алфавита, от A до Z).
Числа типа 1.5e6 функция не обрабатывает так, как parseFloat().
Ознакомьтесь, пожалуйста, с примерами ниже, чтобы не наколоться на подводные камни, запрятаны в работе функции parseInt().
parseInt(''25'') // 25 parseInt(''-25'') // -25 parseInt(''45.12'') // 45 parseInt(''045'',10) // 45 parseInt(''70'',8) // 56 (70 в восьмеричной системе это 56 в десятичной) parseInt(''070'') // 56 (ВАЖНО!!! нуль вначале заставит функцию проанализировать строку как восьмеричное число) parseInt(''88'',8) // NaN (в восьмеричной системе нет цифры 8) parseInt(''a1'') // NaN (ВАЖНО!!! Функция по умолчанию не воспринимает число как 16-ричное, если не дописать в начале строки 0x) parseInt(''a1'',16) // 161 (здесь явно указана система счисления) parseInt(''0xa1'') // 161 (правильный формат 16-ричного числа, можно не указывать второй параметр) parseInt(''099'') // 0 (ВАЖНО!!! Число воспринимается как восьмеричное, но содержащее недопустимые символы) parseInt(''0.5e6'') // 0 (ВАЖНО!!! не работает как parseFloat) parseInt(''ZZ'',36) // 1295 parseInt(''-FF'') // NaN parseInt(''-FF'',16) // -255
Если Вы обрабатываете данные из текстового поля, которые вводит пользователь, всегда используйте parseInt() вместе со вторым параметром radix, это обезопасит Ваш код от неожиданных результатов.
Можете испробовать работу этих функций в примере ниже: