parseFloat анализирует его строковый аргумент, слева направо, пока он не встречает условие ошибки, после чего прекращается разбор.
Согласно mozilla
parseFloat разбирает свой аргумент, строку и возвращает число с плавающей точкой. Если он встречает символ, отличный от знака (+ или -), цифры (0-9), десятичной точки или экспоненты, он возвращает значение до этой точки и игнорирует этот символ и все последующие символы. Если первый символ не может быть преобразован в число, parseFloat возвращает NaN.
Итак, он начинает анализировать поплавок слева направо, пока он не сможет его разобрать. В вашем случае все работает нормально, пока не встретит второе десятичное место. В этот момент он больше не является допустимым поплавком, поэтому он перестает разбираться.
В другом примере, если вы вызываете parseFloat ('100ASDF'), он вернет 100, а не NaN.
Thanks; это имеет смысл, и ваше решение работает как чемпион. –