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

driver.get(pages.simpleTestPage);
    List<Integer> nums = ImmutableList.of(1, 2);
    Map<String, Object> args = ImmutableMap.of("bar", "test", "foo", nums);
    Object res = ((JavascriptExecutor) driver).executeScript("return arguments[0]['foo'][1]", args);
    assertThat(((Number) res).intValue()).isEqualTo(2);
  }
  @Test
  @NotYetImplemented(SAFARI)
  public void testShouldThrowAnExceptionWhenArgumentsWithStaleElementPassed() {
    driver.get(pages.simpleTestPage);
    final WebElement el = driver.findElement(id("oneline"));
    driver.get(pages.simpleTestPage);
    Map<String, Object> args = ImmutableMap.of(
        "key", Arrays.asList("a", new Object[]{"zero", 1, true, 3.14159, false, el}, "c"));
    assertThatExceptionOfType(StaleElementReferenceException.class)
        .isThrownBy(() -> executeScript("return undefined;", args));
  }
  @Test
  @NotYetImplemented(CHROME)
  @NotYetImplemented(CHROMIUMEDGE)
  @Ignore(IE)
  public void testShouldBeAbleToReturnADateObject() {
    driver.get(pages.simpleTestPage);
    String date = (String) executeScript("return new Date();");
    try {
      new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'").parse(date);
    } catch (ParseException e) {
      fail();
    }
  }