def _round_fractions(fractions):
    """Format float fractions as rounded fraction strings.

    Fractions are rounded as short as possible without losing the precision
    necessary to distinguish one fraction from another. The rounding starts at
    3 decimal places and continues up to 10 decimal places, if a shorter
    rounded representation isn't converged upon earlier. If rounding at 10
    decimal places doesn't provide enough precision, each fraction's full
    float precision will be used (i.e. as returned by `repr(float)`).

    For example, [0.12345, 0.12351] would be rounded to four decimal places:
    ['0.1234', '0.1235']. 3 decimal places would be tried first but there isn't
    enough precision to keep both fractions distinguishable.

    """
    for decimals in range(3, 11):
        rounded = ['{fraction:1.{decimals}f}'.format(fraction=fraction,
                                                     decimals=decimals)
                   for fraction in fractions]
        if len(rounded) == len(set(rounded)):
            return rounded
    return [repr(fraction) for fraction in fractions]