Number.parseFloat(): разбор числового начала строки
Number.parseFloat читает допустимое числовое начало строки и возвращает число. Он не проверяет, что вся строка целиком является числом, поэтому подходит не для любой валидации ввода.
Назначение
Number.parseFloat читает допустимое числовое начало строки и возвращает число. Он не проверяет, что вся строка целиком является числом, поэтому подходит не для любой валидации ввода.
Как это работает
Начальные пробелы пропускаются, десятичный разделитель в этом формате — точка. Разбор останавливается на неподходящем символе. Если числового начала нет, получается NaN.
Пример
console.assert(Number.parseFloat(" 12.5px") === 12.5);
console.assert(Number.parseFloat("12,5") === 12);
console.assert(Number.isNaN(Number.parseFloat("px12")));
console.assert(Number.parseFloat("2e3") === 2000);
console.assert(!Number.isFinite(Number.parseFloat("Infinity")));
console.assert(Number.isNaN(Number("12.5px")));
console.log("Числовой префикс отличается от проверки всей строки");
Что должно получиться
Строка с единицей измерения даёт числовой префикс, а десятичная запятая обрывает разбор. Сравнение с Number показывает, что разные операции преобразования имеют разные правила.
Граница применения и частая ошибка
Не используйте parseFloat как готовый разбор локализованной суммы. Ввод с запятой может превратиться в другое число без ошибки. После разбора отдельно проверяйте конечность, диапазон и требования к формату исходной строки.
Самостоятельная проверка
Составьте набор строк: пустая, с пробелами, с точкой, с запятой и с суффиксом. Для каждой запишите желаемое поведение вашей формы. Затем выберите явный алгоритм, который не принимает лишние символы случайно.
Пример JavaScript проверяйте в собственном учебном файле или консоли своего проекта. Встроенная песочница справочника JavaScript не выполняет. Успешное выполнение в одной среде не гарантирует поддержку метода во всех браузерах.