Improved floating point parsing.

The floating point regular expressions would fail in two scenarios:

- A floating point number with a decimal point but no decimals. For
  example: 1., 2., 15.
- A floating point number in scientific notation with no decimal point.
  For example: 1e8, -5e12.