Метод 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 - нет значимой части
parseInt(Infinity) = NaN
parseFloat(Infinity) = Infinity
Почему так?
чтобы понять ответ на этот вопрос нужно иметь высшее образование и знать а нахера в яваскрипт есть undefined type
Не надо хамить. Не хотите отвечать не пишите!
К чему ты это написал, епт?
потому что разработчикам так захотелось , что они курили в этот момент осталось тайной, а вообще если подумать то логика просматривается (чего нельзя сказать о здравом смысле=3)
parseFloat(Infinity) = Infinity
Думаю, там такой алгоритм
1) вначале приводим параметр к строке
2) затем ищем внутри точки, и берем часть строки до второй точки
(например, parseFloat('0.1.2ю') === 0.1 )
3) затем смотрит, число ли перед нами Number('0.1')
В итоге parseFloat(Infinity) = Infinity
parseInt действует по другому, он ищет первое вхождение цифр, если их нет - то NAN
Infinity дохуя большая чтобы в INT пихаться поэтому NaN
По поводу:
parseInt(Infinity) = NaN
parseFloat(Infinity) = Infinity
по всей видимости потому, что typeof(Infinity) = "number", соответственно в случае с parseFloat() возвращает значение как есть, без преобразований(ну number и number), а в случае с parseInt() пытается преобразовать в целое число, что с точки зрения бесконечности невозможно, а раз невозможно привести к числу - значит это NaN
parseInt(Infinity) = NaN
parseFloat(Infinity) = Infinity
--------
представьте число в виде x,y. где x и y бесконечное кол-во цифр (1.999 > 1). по этому и логично, что parseInt делает из 999...,999... = 999... , а parseFloat оставляет как есть. думаю именно так.. в таком случае логика существует)
Jasmina roksa
Большое спасибо за вашу помощь, однако, если быть до конца честным, я пишу все свои собственные работы, так chained echoes как не хочу тратить деньги на то, что я способен сделать. Однако для тех, кто, например, подрабатывает во время учебы или не хочет тратить деньги на ветер.
Easy to reference through various sources of documents. Good experience to constantly improve personal knowledge and experience soccer random in practical application. This is really great when following and updating diverse.
Отправить комментарий
Приветствуются комментарии:Для остальных вопросов и обсуждений есть форум.