Метод 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
Хорошобы явно указать:1)что запятая вместо точки приводит к ошибке.
2) что происходит если не цифровой символ внутри 12ф34 - тоже NaN?.
3) Что точка используется всегда независимо от настройки culture операционной системы как, например, в C#.
Всё же запятая не приводит к ошибке.
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 - нет значимой части
[/css]
[/html]
[/js]
[/php]
parseInt(Infinity) = NaN
parseFloat(Infinity) = Infinity
Почему так?
Отправить комментарий
Приветствуются комментарии:- Полезные.
- Дополняющие прочитанное.
- Вопросы по прочитанному. Именно по прочитанному, чтобы ответ на него помог другим разобраться в предмете статьи. Другие вопросы могут быть удалены.
P.S. Лучшее "спасибо" - не комментарий, как все здорово, а рекомендация или ссылка на статью.Для остальных вопросов и обсуждений есть форум.