Spec-Zone.ru › JavaScript

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

Спецификации

Спецификация
ECMAScript® 2027 Language Specification
# sec-parsefloat-string

Совместимость с браузерами

Настольные компьютеры Мобильные Сервер
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

См. также

  • parseInt()
  • Number.parseFloat()
  • Number.parseInt()
  • Number.prototype.toFixed()

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API