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

Object result = executeScript("return ['zero', [true, false]];");
    assertThat(result).isInstanceOf(List.class);
    assertThat((List<Object>) result).isEqualTo(expectedResult);
  }
  @SuppressWarnings("unchecked")
  @Test
  public void testShouldBeAbleToExecuteJavascriptAndReturnABasicObjectLiteral() {
    driver.get(pages.javascriptPage);
    Object result = executeScript("return {abc: '123', tired: false};");
    assertThat(result).isInstanceOf(Map.class);
    Map<String, Object> map = (Map<String, Object>) result;
    Map<String, Object> expected = ImmutableMap.of(
      "abc", "123",
      "tired", false);
    
    
    assertThat(map.size()).isGreaterThanOrEqualTo(expected.size());
    for (Map.Entry<String, Object> entry : expected.entrySet()) {
      assertThat(map.get(entry.getKey())).as("Value by key %s, )", entry.getKey()).isEqualTo(entry.getValue());
    }
  }
  @SuppressWarnings("unchecked")
  @Test
  public void testShouldBeAbleToExecuteSimpleJavascriptAndReturnAnObjectLiteral() {
    driver.get(pages.javascriptPage);
    Map<String, Object> expectedResult = ImmutableMap.of(
        "foo", "bar",
        "baz", Arrays.asList("a", "b", "c"),
        "person", ImmutableMap.of(
            "first", "John",