• abolz's avatar
    Add an implementation of the Grisu2 algorithm for binary to decimal floating-point conversion · 332f3520
    abolz authored
    This is an attempt to fix #360. The algorithm produces
    decimal representations which are guaranteed to roundtrip
    and in ~99.8% actually produces the shortest possible
    representation. So this is a nice compromise between using
    a precision of digits10 and max_digits10.
    
    Note 1:
    
    The implementation only works for IEEE single/double precision
    numbers. So the old implementation is kept for compatibility
    with non-IEEE implementations and 'long double'.
    
    Note 2:
    
    If number_float_t is 'float', not all serialized numbers can
    be recovered using strtod (strtof works, though). (There is
    exactly one such number and the result is off by 1 ulp.)
    This can be avoided by changing the implementation (the fix
    is trivial), but then the resulting decimal numbers are not
    exactly short.
    332f3520
README.md 51.5 KB