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

private final Set<TypeCoercer<?>> additionalCoercers;
  private final Set<TypeCoercer> coercers;
  private final Map<Type, BiFunction<JsonInput, PropertySetting, Object>> knownCoercers = new ConcurrentHashMap<>();
  JsonTypeCoercer() {
    this(Stream.of());
  }
  JsonTypeCoercer(JsonTypeCoercer coercer, Iterable<TypeCoercer<?>> coercers) {
    this(
      Stream.concat(StreamSupport.stream(coercers.spliterator(), false), coercer.additionalCoercers.stream()));
  }
  private JsonTypeCoercer(Stream<TypeCoercer<?>> coercers) {
    this.additionalCoercers = coercers.collect(collectingAndThen(toSet(), Collections::unmodifiableSet));
    
    Set<TypeCoercer<?>> builder = new LinkedHashSet<>(additionalCoercers);
    
    
    builder.add(new BooleanCoercer());
    builder.add(new NumberCoercer<>(Byte.class, Number::byteValue));
    builder.add(new NumberCoercer<>(Double.class, Number::doubleValue));
    builder.add(new NumberCoercer<>(Float.class, Number::floatValue));
    builder.add(new NumberCoercer<>(Integer.class, Number::intValue));
    builder.add(new NumberCoercer<>(Long.class, Number::longValue));
    builder.add(
        new NumberCoercer<>(