Javascript.RU

parseFloat

Синтаксис

parseFloat(strVal)

Аргументы

strVal
строка, представляющая числовое значение

Описание, примеры

Метод parseFloat преобразует строковый аргумент в число с плавающей точкой. Если во время преобразования он обнаруживает неподходящий символ, то заканчивает процесс и возвращает результат.

Допустимы начальные и конечные пробелы.

Если аргумент не может быть преобразован в число - возвращает NaN

Пример: все вызовы вернут 3.14
parseFloat("3.14");
parseFloat("314e-2");
parseFloat("0.0314E+2");

var x = "3.14";
parseFloat(x);

parseFloat("3.14more non-digit characters");
Пример: возврат NaN
parseFloat("тест") // NaN

Для более строгого преобразовния строки в число используйте оператор "+". Он возвращает NaN, если строка в точности не является числом.

str = "3.14"
+str == parseFloat(str)

+"3.14abc" // NaN, но
parseFloat("3.14abc") // = 3.14

Автор: Гость (не зарегистрирован), дата: 22 сентября, 2010 - 10:30
#permalink

Хорошобы явно указать:1)что запятая вместо точки приводит к ошибке.
2) что происходит если не цифровой символ внутри 12ф34 - тоже NaN?.
3) Что точка используется всегда независимо от настройки culture операционной системы как, например, в C#.


Автор: Гость (не зарегистрирован), дата: 1 июня, 2011 - 11:56
#permalink

Всё же запятая не приводит к ошибке.
parseFloat как и parseInt сканирует строку по шаблону. Все символы не входящие в шаблон (включая запятую) отбрасываются. NaN выдается только в том случае если первый символ не попал под шаблон. Пробелы в начале строки отбрасываются (может быть и другие пробельные символы, лень тестить:))
parseFloat(34f22)//=34
parseFloat(34,22//=34
parseFloat(34.22)//=34.22
parseFloat(f34.22)//=NaN - первый символ нечисловой
parseFloat(34e2)//=3400
parseFloat(34e2e2)//=3400
parseFloat(34ee2)//=34 - после первой e нет порядка числа.
parseFloat(e2)//=NaN - нет значимой части


Автор: Гость (не зарегистрирован), дата: 2 мая, 2012 - 14:27
#permalink

parseInt(Infinity) = NaN
parseFloat(Infinity) = Infinity
Почему так?


Автор: Гость (не зарегистрирован), дата: 7 декабря, 2012 - 16:50
#permalink

чтобы понять ответ на этот вопрос нужно иметь высшее образование и знать а нахера в яваскрипт есть undefined type


Автор: Гость (не зарегистрирован), дата: 14 февраля, 2013 - 15:22
#permalink

Не надо хамить. Не хотите отвечать не пишите!


Автор: Гость (не зарегистрирован), дата: 6 сентября, 2015 - 14:59
#permalink

К чему ты это написал, епт?


Автор: Гость (не зарегистрирован), дата: 7 декабря, 2012 - 16:53
#permalink

потому что разработчикам так захотелось , что они курили в этот момент осталось тайной, а вообще если подумать то логика просматривается (чего нельзя сказать о здравом смысле=3)


Автор: Гость (не зарегистрирован), дата: 18 февраля, 2015 - 01:29
#permalink

parseFloat(Infinity) = Infinity

Думаю, там такой алгоритм
1) вначале приводим параметр к строке
2) затем ищем внутри точки, и берем часть строки до второй точки
(например, parseFloat('0.1.2ю') === 0.1 )
3) затем смотрит, число ли перед нами Number('0.1')

В итоге parseFloat(Infinity) = Infinity

parseInt действует по другому, он ищет первое вхождение цифр, если их нет - то NAN


Автор: Гость (не зарегистрирован), дата: 22 ноября, 2016 - 08:56
#permalink

Infinity дохуя большая чтобы в INT пихаться поэтому NaN


Автор: Ji (не зарегистрирован), дата: 10 декабря, 2014 - 19:39
#permalink

По поводу:
parseInt(Infinity) = NaN
parseFloat(Infinity) = Infinity

по всей видимости потому, что typeof(Infinity) = "number", соответственно в случае с parseFloat() возвращает значение как есть, без преобразований(ну number и number), а в случае с parseInt() пытается преобразовать в целое число, что с точки зрения бесконечности невозможно, а раз невозможно привести к числу - значит это NaN


Автор: slavas (не зарегистрирован), дата: 29 августа, 2015 - 03:11
#permalink

parseInt(Infinity) = NaN
parseFloat(Infinity) = Infinity
--------
представьте число в виде x,y. где x и y бесконечное кол-во цифр (1.999 > 1). по этому и логично, что parseInt делает из 999...,999... = 999... , а parseFloat оставляет как есть. думаю именно так.. в таком случае логика существует)


Отправить комментарий

Приветствуются комментарии:
  • Полезные.
  • Дополняющие прочитанное.
  • Вопросы по прочитанному. Именно по прочитанному, чтобы ответ на него помог другим разобраться в предмете статьи. Другие вопросы могут быть удалены.
    Для остальных вопросов и обсуждений есть форум.
P.S. Лучшее "спасибо" - не комментарий, как все здорово, а рекомендация или ссылка на статью.
Содержание этого поля является приватным и не предназначено к показу.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Разрешены HTML-таги: <strike> <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <u> <i> <b> <pre> <img> <abbr> <blockquote> <h1> <h2> <h3> <h4> <h5> <p> <div> <span> <sub> <sup>
  • Строки и параграфы переносятся автоматически.
  • Текстовые смайлы будут заменены на графические.

Подробнее о форматировании

CAPTCHA
Антиспам
2 + 15 =
Введите результат. Например, для 1+3, введите 4.
 
Поиск по сайту
Реклама
Содержание

Учебник javascript

Основные элементы языка

Сундучок с инструментами

Интерфейсы

Все об AJAX

Оптимизация

Разное

Дерево всех статей

Последние комментарии
Последние темы на форуме
Forum