gpt4 book ai didi

python - 对 python 负 decimal.Decimal 和正 int 进行模运算

转载 作者:太空狗 更新时间:2023-10-29 21:27:54 24 4
gpt4 key购买 nike

使用简单的int:

>>> -45 % 360
315

然而,使用 decimal.Decimal:

>>> from decimal import Decimal
>>> Decimal('-45') % 360
Decimal('-45')

我希望得到 Decimal('315')

这有什么原因吗?有没有办法获得一致的行为(无需修补 decimal.Decimal)? (我没有更改上下文,也找不到如何更改它来解决这种情况)。

最佳答案

经过长时间的搜索(因为搜索“%”、“mod”、“modulo”等给出了一千个结果),我终于意外地发现,this is intended :

There are some small differences between arithmetic on Decimal objects and arithmetic on integers and floats. When the remainder operator % is applied to Decimal objects, the sign of the result is the sign of the dividend rather than the sign of the divisor:

>>> (-7) % 4
1
>>> Decimal(-7) % Decimal(4)
Decimal('-3')

我不知道这样做的原因,但看起来不可能改变这种行为(不打补丁)。

关于python - 对 python 负 decimal.Decimal 和正 int 进行模运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48347515/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com