format: fix exponential floating point output
sys::scale-exponent was not working correctly and outputting numbers in the wrong range. Furthermore, using sys::scale-exponent for scaling the number to the correct range is flawed anyway, since it introduces rounding errors. Hence we replace sys::scale-exponent by the much simpler sys::exponent-in-base10 function and fix the logic in format-exp-aux to scale using sys::flonum-to-string, which is rounding error free. Moreover, sys::flonum-to-string was buggy and not rounding numbers correctly when the 'd' parameter was given, which has also been fixed. Fixes #437.
Showing with 46 additions and 140 deletions