On Fri, Oct 9, 2020 at 3:43 AM Steven D'Aprano <st...@pearwood.info> wrote: > > On Thu, Oct 08, 2020 at 11:58:04AM -0400, Random832 wrote: > > > I was making a "convert Fraction to Decimal, exactly if possible" > > function and ran into a wall: it's not possible to do some of the > > necessary operations with exact precision in decimal: > > Of course you can't do them with *exact* precision in Decimal, because > that only has a fixed precision. (User-configurable, but fixed.) > > > py> from decimal import Decimal > py> from fractions import Fraction > py> x = Fraction(1, 3) > py> Decimal(x.numerator)/x.denominator > Decimal('0.3333333333333333333333333333') > >
You trimmed off the part where the OP said that the denominator would be only multiples of 2 and/or 5 :) >>> Fraction(1, 2) ** 53 * Fraction(1, 5) ** 47 Fraction(1, 6400000000000000000000000000000000000000000000000) >>> Decimal("314159265358979323") / _.denominator Decimal('4.908738521234051921875E-32') In theory, this should be precisely representable in decimal, but how many digits would you need? ChrisA _______________________________________________ Python-ideas mailing list -- python-ideas@python.org To unsubscribe send an email to python-ideas-le...@python.org https://mail.python.org/mailman3/lists/python-ideas.python.org/ Message archived at https://mail.python.org/archives/list/python-ideas@python.org/message/32RSXKLXHXU5WNKNAJJYRQJCSWQYFXRW/ Code of Conduct: http://python.org/psf/codeofconduct/