New submission from Devin Jeanpierre:
>>> 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
This is PHP-like and confusing, and maybe not justified just by standards
compliance. If it is justified by standards compliance, this deserves to be
spelled out in big red letters in the documentation for the decimal module,
along with any other inconsistencies.
----------
components: Library (Lib)
messages: 233711
nosy: Devin Jeanpierre
priority: normal
severity: normal
status: open
title: Decimal(0)**0 is an error, 0**0 is 1, but Decimal(0) == 0
versions: Python 2.7, Python 3.2, Python 3.3, Python 3.4, Python 3.5, Python 3.6
_______________________________________
Python tracker <[email protected]>
<http://bugs.python.org/issue23201>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com