21 Convert floats to components of a mixed fraction representation 23 Returns the closest fractional representation using the 24 provided denominators. For example, 4.500002 would become 25 the whole number 4, the numerator 1 and the denominator 2 28 number (float): number for convert 29 denominators (iter of ints): denominators to use, default [1 .. 20] 31 whole, numerator, denominator (int): Integers of the mixed fraction 33 int_number = int(number)
34 if int_number == number:
35 return int_number, 0, 1
37 frac_number = abs(number - int_number)
39 denominators = range(1, 21)
41 for denominator
in denominators:
42 numerator = abs(frac_number) * denominator
43 if abs(numerator - round(numerator)) < 0.01:
48 return int_number, int(round(numerator)), denominator