parseFloat parses its string argument from left-to-right, until it encounters an error condition, at which point it stops parsing.
According to mozilla
parseFloat parses its argument, a string, and returns a floating point number. If it encounters a character other than a sign (+ or -), numeral (0-9), a decimal point, or an exponent, it returns the value up to that point and ignores that character and all succeeding characters. If the first character cannot be converted to a number, parseFloat returns NaN.
So it starts to parse a float from left to right, until it cannot parse it any more. In your case, things work fine until it encounters the second decimal place. At that point, it is no longer a valid float, so it stops parsing.
In another example, if you call parseFloat('100ASDF'), it will return 100, and not NaN.