to_htlm + read_html small errors for floats despite formatter
#### Description

Storing a double precision float as HTML (`to_html`) and loading it back (`read_html`) loses precision, even though `float_format` has enough precision.

I saw that `float_format` is working, but even with way too many digits, it fails to recover the original number.

In contrast, just calling `float` or `float64` on the string-formatted number works perfectly fine.

#### A small, complete example of the issue

```python
from pandas import DataFrame, read_html


def floatformat(val):
	return '{:.16e}'.format(val)

x = 1.18047406523e+307
s = floatformat(x)
y = float(s)
assert x == y

frame = DataFrame(data=[[x]], columns=['a'])
pth = '/tmp/demo.dta'
with open(pth, 'w+') as fh:
	frame.to_html(fh, float_format=floatformat)
with open(pth, 'r') as fh:
	frame2 = read_html(fh)[0]

assert frame.a[0] == frame2.a[0], floatformat(frame.a[0] - frame2.a[0])
assert x == frame2.a[0]
```

#### Expected Output
Nothing

#### Actual Output
The last two assertions fail:

    AssertionError: -4.9896007738367995e+291

#### Output of ``pd.show_versions()``
same as #14618 
