## 🐛 Bug Report

JavascriptExecutor.executeScript() returns float numbers with e-notation as Long instead of Double

## To Reproduce

Object ret = ((JavascriptExecutor) driver).executeScript("return parseFloat('6.02214129e+23');");

## Expected behavior

ret has Double class with value 6.02214129e+23

## Actual behavior

ret has Long class with value 9223372036854775807

## Test script or set of commands reproducing this issue

See above, just one line

## Environment

OS: Windows10
Browser: Chrome, Firefox, Internet Explorer
Browser version: 75.0.3770.100, 68, 11 
Browser Driver version: ChromeDriver 75.0.3770.90, GeckoDriver 0.24, InternetExplorerDriver 3.14.0
Language Bindings version: Java 1.8.0_201
Selenium Grid version (if applicable): 3.141.59 

assertThatExceptionOfType(WebDriverException.class)
        .isThrownBy(() -> executeScript("return squiggle();"))
        .satisfies(t -> assertThat(t.getMessage()).doesNotStartWith("null "));
  }
  @Test
  @Ignore(CHROME)
  @Ignore(CHROMIUMEDGE)
  @Ignore(IE)
  @NotYetImplemented(SAFARI)
  @Ignore(MARIONETTE)
  @NotYetImplemented(HTMLUNIT)
  @NotYetImplemented(EDGE)
  public void testShouldThrowAnExceptionWithMessageAndStacktraceWhenTheJavascriptIsBad() {
    driver.get(pages.xhtmlTestPage);
    String js = "function functionB() { throw Error('errormessage'); };"
                + "function functionA() { functionB(); };"
                + "functionA();";
    assertThatExceptionOfType(WebDriverException.class)
        .isThrownBy(() -> executeScript(js))
        .withMessageContaining("errormessage")
        .satisfies(t -> {
          Throwable rootCause = getRootCause(t);
          assertThat(rootCause).hasMessageContaining("errormessage");
          assertThat(Arrays.asList(rootCause.getStackTrace()))
              .extracting(StackTraceElement::getMethodName)
              .contains("functionB");
        });
  }
  @Test
  public void testShouldBeAbleToCallFunctionsDefinedOnThePage() {