I'm trying to convert a mathematical expression into a reduced fraction. When using the Fraction function from the fractions module I get an unreduced fraction.
The code
from fractions import Fraction
print(Fraction(1 + 1/(2 + 1/2)))
returns 3152519739159347/2251799813685248
which reduces to 7/5
.
I would like my code to return the reduced fraction.
This is due to the imprecision of floating point math.
While it is true that 1 + 1/(2 + 1/2)
should reduce to 7/5
(or 1.4
), the decimal 1.4
cannot be precisely represented by floating point numbers
>>> '{:030f}'.format(1.4)
1.39999999999999999999911182158029987
That inaccuracy is leading it to produce a different fraction than 7/5
If you want precise fraction math, you need to do the entire equation using fractions and not mix it with floating point numbers.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With