Метод 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
#permalinkparseInt(Infinity) = NaN
parseFloat(Infinity) = Infinity
Почему так?
Автор: Ji (не зарегистрирован), дата: 10 декабря, 2014 - 19:39
#permalinkПо поводу:
parseInt(Infinity) = NaN
parseFloat(Infinity) = Infinity
по всей видимости потому, что typeof(Infinity) = "number", соответственно в случае с parseFloat() возвращает значение как есть, без преобразований(ну number и number), а в случае с parseInt() пытается преобразовать в целое число, что с точки зрения бесконечности невозможно, а раз невозможно привести к числу - значит это NaN
Автор: спасибо (не зарегистрирован), дата: 17 февраля, 2023 - 06:21
#permalinkБольшое спасибо за вашу помощь, однако, если быть до конца честным, я пишу все свои собственные работы, так chained echoes как не хочу тратить деньги на то, что я способен сделать. Однако для тех, кто, например, подрабатывает во время учебы или не хочет тратить деньги на ветер.