Clean Singleton Docstrings

Marko Rauhamaa marko at pacujo.net
Sun Jul 17 03:41:48 EDT 2016


Chris Angelico <rosuav at gmail.com>:

> The trouble is, repeated addition of fractions is *able* to deliver an
> exact result. It just might result in an incredibly slow program.

True, although the programmer has control over the feature. If you
*want* the luxury of exact fractions, you pay the price. If you don't,
you make the numbers inexact.

A somewhat analogous situation is there in Python's integers, which have
an unlimited range. The feature is extremely useful in cryptography, for
example (DSA verification is a couple of lines of Python).

> And then if you mix types, does it aim for the greatest possible
> 'accuracy', even if that's not quite accurate? (For instance, if you
> add 0.2 to 5/8, does it convert to float or to fraction?)

   Thus inexactness is a contagious property of a number.

   <URL: http://www.schemers.org/Documents/Standards/R5RS/HTML/r5r
   s-Z-H-9.html#%_sec_6.2.3>

Guile:

   (+ 0.2 5/8)
   ==> 0.825
   (exact? (+ 0.2 5/8))
   ==> #f

Python, for comparison:

   >>> 0.2 + fractions.Fraction(5, 8)
   0.825
   >>> decimal.Decimal("0.1") + 0.1
   Traceback (most recent call last):
     File "<stdin>", line 1, in <module>
   TypeError: unsupported operand type(s) for +: 'decimal.Decimal' and
    'float'
   >>> fractions.Fraction(5, 8) + decimal.Decimal("0.1")
   Traceback (most recent call last):
     File "<stdin>", line 1, in <module>
   TypeError: unsupported operand type(s) for +: 'Fraction' and 'decim
   al.Decimal'


Marko



More information about the Python-list mailing list