make use of scientific notation for BigFloat consistent with other types (#29211)
This switches to non-scientific notation when the scientific exponent
would be in `-4:5`, as is the case for e.g. Float64.
For example, `string(big(42.0))` is now `"42.0"`.