• Simon Gene Gottlieb's avatar
    Fix float precision (#649) · abf941b2
    Simon Gene Gottlieb authored
    The issue is that numbers like
    2.01 or 3.01 can not be precisely represented with binary floating point
    numbers.
    
    This replaces all occurrences of 'std::numeric_limits<T>::digits10 + 1' with
    'std::numeric_limits<T>::max_digits10'.
    
    Background:
    Using 'std::numeric_limits<T>::digits10 + 1' is not precise enough.
    Converting a 'float' into a 'string' and back to a 'float' will not always
    produce the original 'float' value. To guarantee that the 'string'
    representation has sufficient precision the value
    'std::numeric_limits<T>::max_digits10' has to be used.
    abf941b2
emitter_test.cpp 25.5 KB