Decimals and other numbers

Dave Angel davea at davea.name
Fri Jan 9 03:43:40 CET 2015


On 01/08/2015 09:33 PM, Devin Jeanpierre wrote:
> 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'>]").


What you don't say is which behavior you actually expected.  Since 0**0 
is undefined mathematically, I'd expect either an exception or a NAN result.


-- 
DaveA



More information about the Python-list mailing list