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/

Reply via email to