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

@Test(timeout = 10000)
  @NotYetImplemented(CHROME)
  @NotYetImplemented(CHROMIUMEDGE)
  @Ignore(IE)
  @NotYetImplemented(SAFARI)
  @NotYetImplemented(value = MARIONETTE, reason = "https:bugzilla.mozilla.org/show_bug.cgi?id=1502656")
  @NotYetImplemented(EDGE)
  public void shouldReturnDocumentElementIfDocumentIsReturned() {
    driver.get(pages.simpleTestPage);
    Object value = executeScript("return document");
    assertThat(value).isInstanceOf(WebElement.class);
    assertThat(((WebElement) value).getText()).contains("A single line of text");
  }
  @Test(timeout = 10000)
  @Ignore(value = IE, reason = "returns WebElement")
  @Ignore(HTMLUNIT)
  public void shouldHandleObjectThatThatHaveToJSONMethod() {
    driver.get(pages.simpleTestPage);
    Object value = executeScript("return window.performance.timing");
    assertThat(value).isInstanceOf(Map.class);
  }
  @Test(timeout = 10000)
  @Ignore(HTMLUNIT)
  public void shouldHandleRecursiveStructures() {
    driver.get(pages.simpleTestPage);
    assertThatExceptionOfType(JavascriptException.class).isThrownBy(() -> executeScript(
        "var obj1 = {}; var obj2 = {}; obj1['obj2'] = obj2; obj2['obj1'] = obj1; return obj1"));
  }
}