## 🐛 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 

List<WebElement> resultsList = (List<WebElement>) executeScript(scriptToExec);
    assertThat(resultsList).isNotEmpty();
  }
  @NeedsFreshDriver
  @Test
  @NotYetImplemented(value = HTMLUNIT,
      reason = "HtmlUnit: can't execute JavaScript before a page is loaded")
  public void testShouldBeAbleToExecuteScriptOnNoPage() {
    String text = (String) executeScript("return 'test';");
    assertThat(text).isEqualTo("test");
  }
  @Test
  public void testShouldBeAbleToCreateAPersistentValue() {
    driver.get(pages.formPage);
    executeScript("document.alerts = []");
    executeScript("document.alerts.push('hello world');");
    String text = (String) executeScript("return document.alerts.shift()");
    assertThat(text).isEqualTo("hello world");
  }
  @Test
  public void testCanHandleAnArrayOfElementsAsAnObjectArray() {
    driver.get(pages.formPage);
    List<WebElement> forms = driver.findElements(By.tagName("form"));
    Object[] args = new Object[]{forms};
    String name = (String) ((JavascriptExecutor) driver).executeScript(
        "return arguments[0][0].tagName", args);
    assertThat(name).isEqualToIgnoringCase("form");
  }
  @Test
  public void testCanPassAMapAsAParameter() {