while still preserving the invariant ``eval(repr(x)) == x``.
Historically, the Python prompt and built-in :func:`repr` function would chose
-the one with 17 significant digits, ``0.10000000000000001``, Starting with
+the one with 17 significant digits, ``0.10000000000000001``. Starting with
Python 3.1, Python (on most systems) is now able to choose the shortest of
these and simply display ``0.1``.
Though the numbers cannot be made closer to their intended exact values,
the :func:`round` function can be useful for post-rounding so that results
-have inexact values that are comparable to one another::
+with inexact values become comparable to one another::
- >>> round(.1 + .1 + .1, 1) == round(.3, 1)
+ >>> round(.1 + .1 + .1, 10) == round(.3, 10)
True
Binary floating-point arithmetic holds many surprises like this. The problem
wary of floating-point! The errors in Python float operations are inherited
from the floating-point hardware, and on most machines are on the order of no
more than 1 part in 2\*\*53 per operation. That's more than adequate for most
-tasks, but you do need to keep in mind that it's not decimal arithmetic, and
+tasks, but you do need to keep in mind that it's not decimal arithmetic and
that every float operation can suffer a new rounding error.
While pathological cases do exist, for most casual use of floating-point
>>> x = 3.14159
>>> x.as_integer_ratio()
- (3537115888337719L, 1125899906842624L)
+ (3537115888337719, 1125899906842624)
Since the ratio is exact, it can be used to losslessly recreate the
original value::
encoded = binascii.b2a_base64(s)[:-1]
if altchars is not None:
if not isinstance(altchars, bytes_types):
- altchars = TypeError("expected bytes, not %s"
- % altchars.__class__.__name__)
+ raise TypeError("expected bytes, not %s"
+ % altchars.__class__.__name__)
assert len(altchars) == 2, repr(altchars)
return _translate(encoded, {'+': altchars[0:1], '/': altchars[1:2]})
return encoded
PyObject_Del(r);
}
-/* Return number of items in range (lo, hi, step), when arguments are PyLong
- * objects. Return a value < 0 if & only if the true value is too large to
- * fit in a signed long. Arguments MUST return 1 with PyLong_Check(). Return
- * -1 when there is an error.
+/* Return number of items in range (lo, hi, step) as a PyLong object,
+ * when arguments are PyLong objects. Arguments MUST return 1 with
+ * PyLong_Check(). Return NULL when there is an error.
*/
static PyObject*
range_length_obj(rangeobject *r)