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

for (int i = 0; i < first.size(); ++i) {
      if (first.get(i) instanceof List<?>) {
        if (!compareLists((List<?>) first.get(i), (List<?>) second.get(i))) {
          return false;
        }
      } else {
        if (!first.get(i).equals(second.get(i))) {
          return false;
        }
      }
    }
    return true;
  }
  @Test
  public void testPassingAndReturningALongShouldReturnAWholeNumber() {
    driver.get(pages.javascriptPage);
    Long expectedResult = 1L;
    Object result = executeScript("return arguments[0];", expectedResult);
    assertThat(result).isInstanceOfAny(Integer.class, Long.class).isEqualTo(expectedResult);
  }
  @Test
  public void testPassingAndReturningADoubleShouldReturnADecimal() {
    driver.get(pages.javascriptPage);
    Double expectedResult = 1.2;
    Object result = executeScript("return arguments[0];", expectedResult);
    assertThat(result).isInstanceOfAny(Float.class, Double.class).isEqualTo(expectedResult);
  }
  @Test
  public void testShouldThrowAnExceptionWhenTheJavascriptIsBad() {
    driver.get(pages.xhtmlTestPage);