【发布时间】:2018-06-29 01:45:34
【问题描述】:
用简单的ints:
>>> -45 % 360
315
然而,使用decimal.Decimal:
>>> from decimal import Decimal
>>> Decimal('-45') % 360
Decimal('-45')
我希望得到Decimal('315')。
这有什么原因吗?有没有办法获得一致的行为(无需修补 decimal.Decimal)? (我没有改变上下文,也找不到如何改变它来解决这种情况)。
【问题讨论】:
-
你听起来像是打补丁是极端的事情,应该避免,但是像 Python 这样的语言给你很大的空间在你自己的代码中做这件事(子类,神奇的“dunder”方法,包装器,等等。)。当然,您始终可以使用简单但有效的解决方法来编写自己的函数来使用,而不是使用内置语法。
-
@JohnY 对不起,我不是故意的;我的意图是让这个问题不被理解为“如何修补 Decimal 以获得这种行为?”,而是:“这种行为有原因吗?”和“是否有任何已经实施的方法来改变这种行为(例如通过上下文设置)?”。也许我应该提到我已经在需要的地方实施了一个小解决方法。
标签: python python-3.x decimal