Как работает parseFloat (), когда строка содержит нечисловые символы? - PullRequest
2 голосов
/ 08 декабря 2011

У меня проблема при выполнении parseFloat() - я не понимаю, почему он выдает следующие выходные данные:

document.write(parseFloat("6e2") + "<br />"); //output is 600 why?
document.write(parseFloat("6b2") + "<br />"); //output is 6 why?
document.write(parseFloat("6c2") + "<br />"); //output is 6 why?

Не могли бы вы рассказать, как работает скрипт?

Ответы [ 3 ]

12 голосов
/ 08 декабря 2011

6e2 производит 600, потому что он рассматривает ваш вклад как научную запись.

6e2 == 6 x 10 2 == 600

Два других продукта 6* * * * * * * * * * * *, потому что parseFloat анализирует 6, затем получает на входе, он не может преобразовать в число, поэтому он останавливается и возвращает найденный результат.

За MDN :

parseFloat - это функция верхнего уровня, не связанная ни с одним объектом.

parseFloat анализирует свой аргумент, строку и возвращает число с плавающей запятой.Если он встречает символ, отличный от знака (+ или -), цифры (0-9), десятичной точки или показателя степени, он возвращает значение до этой точки и игнорирует этот символ и все последующие символы.Допускаются начальные и конечные пробелы.

Если первый символ не может быть преобразован в число, parseFloat возвращает NaN.

В арифметических целях значение NaN не является числом в любом радиксе.Вы можете вызвать функцию isNaN, чтобы определить, является ли результатом parseFloat значение NaN.Если NaN передается арифметическим операциям, результатом операции также будет NaN.

2 голосов
/ 09 января 2013
Функция

parseFloat() определяет, является ли первый символ в указанной строке числом. Если это число, то оно анализирует строку, пока не достигнет конца числа, и возвращает число как число, а не как строку.

, поэтому parseFloat ("6b2") возвращает 6.

поэтому parseFloat ("6c2") возвращает 6.

0 голосов
/ 08 декабря 2011

Для первого это потому, что он рассматривает e как символ экспоненты (^)

Два других - только 6, потому что он игнорирует остальные, как только числа закончатся

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...