parseFloat()
Базовый уровень Широко доступно
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с июля 2015 года.
Функция parseFloat() анализирует строковый аргумент и возвращает число с плавающей запятой.
Попробуйте
function circumference(r) {
return parseFloat(r) * 2.0 * Math.PI;
}
console.log(circumference(4.567));
// Expected output: 28.695307297889173
console.log(circumference("4.567abcdefgh"));
// Expected output: 28.695307297889173
console.log(circumference("abcdefgh"));
// Expected output: NaN
Синтаксис
parseFloat(string)
Параметры
-
string - Значение для анализа, приведенное к строке. Ведущие пробельные символы в этом аргументе игнорируются.
Возвращаемое значение
Число с плавающей запятой, проанализированное из заданного string, или NaN, если первый непробельный символ не может быть преобразован в число.
Примечание: JavaScript не имеет различий между "числами с плавающей запятой" и "целыми числами" на уровне языка. parseInt() и parseFloat() отличаются только своим поведением при анализе, но не обязательно возвращаемыми значениями. Например, parseInt("42") и parseFloat("42") вернут одно и то же значение: Number 42.
Описание
Функция parseFloat преобразует свой первый аргумент в строку, анализирует эту строку как десятичный числовой литерал, а затем возвращает число или NaN. Принимаемый синтаксис числа можно обобщить следующим образом:
- Символы, принимаемые
parseFloat(), — это знак плюс (+), знак минус (-U+002D HYPHEN-MINUS), десятичные цифры (0–9), десятичная точка (.), показатель степени (eилиE) и литерал"Infinity". - Знаки
+/-могут находиться только в самом начале строки или сразу после символаe/E. Десятичная точка может встречаться только один раз и только перед символомe/E. Символe/Eможет встречаться только один раз, и только если перед ним есть хотя бы одна цифра. - Ведущие пробелы в аргументе обрезаются и игнорируются.
-
parseFloat()также может анализировать и возвращатьInfinityили-Infinity, если строка начинается с"Infinity"или"-Infinity", которым предшествуют ноль или более пробельных символов. -
parseFloat()выбирает самую длинную подстроку, начиная с начала, которая формирует допустимый числовой литерал. Если встречается недопустимый символ, возвращается число, представленное до этого момента, игнорируя недопустимый символ и все последующие символы. - Если первый символ аргумента не может начинать допустимый числовой литерал согласно приведенному выше синтаксису,
parseFloatвозвращаетNaN.
С точки зрения синтаксиса, parseFloat() анализирует подмножество синтаксиса, которое принимает функция Number(). А именно, parseFloat() не поддерживает недесятичные литералы с префиксами 0x, 0b или 0o, но поддерживает все остальное. Однако parseFloat() более снисходителен, чем Number(), потому что он игнорирует конечные недопустимые символы, которые привели бы к возврату NaN функцией Number().
Подобно числовым литералам и Number(), число, возвращаемое из parseFloat(), может быть не точно равно числу, представленному строкой, из-за диапазона и неточности чисел с плавающей запятой. Для чисел за пределами диапазона -1.7976931348623158e+308 – 1.7976931348623158e+308 (см. Number.MAX_VALUE) возвращается -Infinity или Infinity.
Примеры
Использование parseFloat()
Следующие примеры возвращают 3.14:
parseFloat(3.14);
parseFloat("3.14");
parseFloat(" 3.14 ");
parseFloat("314e-2");
parseFloat("0.0314E+2");
parseFloat("3.14some non-digit characters");
parseFloat({
toString() {
return "3.14";
},
});
parseFloat() возвращает NaN
Следующий пример возвращает NaN:
parseFloat("FF2");
По общему мнению, поскольку строка NaN сама по себе является недопустимым синтаксисом, принимаемым parseFloat(), передача "NaN" также возвращает NaN.
parseFloat("NaN"); // NaN
Возвращение Infinity
Значения Infinity возвращаются, когда число выходит за пределы диапазона формата IEEE 754-2019 с двойной точностью 64 бит:
parseFloat("1.7976931348623159e+308"); // Infinity
parseFloat("-1.7976931348623159e+308"); // -Infinity
Infinity также возвращается, когда строка начинается с "Infinity" или "-Infinity":
parseFloat("Infinity"); // Infinity
parseFloat("-Infinity"); // -Infinity
Взаимодействие со значениями BigInt
parseFloat() не обрабатывает BigInt значения. Он останавливается на символе n и обрабатывает предшествующую строку как обычное целое число, с возможной потерей точности. Если значение BigInt передается в parseFloat(), оно будет преобразовано в строку, и строка будет проанализирована как число с плавающей запятой, что также может привести к потере точности.
parseFloat(900719925474099267n); // 900719925474099300
parseFloat("900719925474099267n"); // 900719925474099300
Вместо этого следует передать строку в функцию BigInt(), без конечного символа n.
BigInt("900719925474099267");
// 900719925474099267n
Спецификации
Совместимость с браузерами
| Настольные компьютеры | Мобильные | Сервер | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on iOS | Samsung Internet | WebView Android | WebView on iOS | Bun | Deno | Node.js | |
parseFloat |
1 |
12 |
1 |
3 |
1 |
18 |
4 |
10.1 |
1 |
1.0 |
4.4 |
1 |
1.0.0 |
1.0 |
0.10.0 |
См. также
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseFloat