Workaround for Windows denormal bug in float_to_str_bytes_common

On Windows (MinGW32), `2.0f64.powf(-1074.0)` returns zero instead of a denormal number, which screws up everything later on in `float_to_str_bytes_common`.  Changing it to use `powi` works around the problem but breaks the build on Linux (and presumably other systems).

Fixes #13439.