Decimals and other numbers

Devin Jeanpierre jeanpierreda at gmail.com
Fri Jan 9 03:33:21 CET 2015


I noticed some very PHP-ish behavior today:

>>> import decimal
>>> x = 0
>>> y = float(x)
>>> z = decimal.Decimal(x)
>>> x == y == z == x
True
>>> x ** x
1
>>> y**y
1.0
>>> z**z
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/decimal.py", line 2216, in __pow__
    return context._raise_error(InvalidOperation, '0 ** 0')
  File "/usr/lib/python2.7/decimal.py", line 3872, in _raise_error
    raise error(explanation)
decimal.InvalidOperation: 0 ** 0


I'd file a bug report but I'm anticipating some rational (heh)
explanation. Any ideas?

Python 3.4 also raises this exception, but the error message is less
informative. ("decimal.InvalidOperation: [<class
'decimal.InvalidOperation'>]").

-- Devin



More information about the Python-list mailing list