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

Number.class,
            num -> {
              if (num.doubleValue() % 1 != 0) {
                return num.doubleValue();
              }
              return num.longValue();
            }));
    builder.add(new NumberCoercer<>(Short.class, Number::shortValue));
    builder.add(new StringCoercer());
    builder.add(new EnumCoercer());
    builder.add(new UriCoercer());
    builder.add(new UrlCoercer());
    builder.add(new UuidCoercer());
    
    builder.add(new MapCoercer<>(
        Capabilities.class,
        this,
        Collector.of(MutableCapabilities::new, (caps, entry) -> caps.setCapability((String) entry.getKey(), entry.getValue()), MutableCapabilities::merge, UNORDERED)));
    
    
    builder.add(new CollectionCoercer<>(List.class, this, Collectors.toCollection(ArrayList::new)));
    
    builder.add(new CollectionCoercer<>(Set.class, this, Collectors.toCollection(HashSet::new)));
    builder.add(new MapCoercer<>(
        Map.class,
        this,
        Collector.of(LinkedHashMap::new, (map, entry) -> map.put(entry.getKey(), entry.getValue()), (l, r) -> { l.putAll(r); return l; }, UNORDERED, CONCURRENT)));
    
    builder.add(new ObjectCoercer(this));
    builder.add(new StaticInitializerCoercer());