float和Decimal的模和整数除法的不同结果

时间:2015-04-09 15:55:06

标签: python python-3.x

我对如下所示的行为感到困惑:

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

>>> (-7) // 3
-3
>>> Decimal('-7') // Decimal('3') 
Decimal('-2')
>>>

有人可以解释一下吗?

1 个答案:

答案 0 :(得分:5)

引用decimal documentation

  

Decimal对象上的算术之间存在一些小的差异   和整数和浮点数的算术。当余数运算符时   应用于Decimal对象,结果的符号是符号   红利而不是除数的标志:

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

整数除法运算符 // 的行为类似,返回   相反,真实商的整数部分(截断为零)   比它的楼层,以保持通常的身份 x ==(x // y)* y   + x%y

>>> -7 // 4
-2
>>> Decimal(-7) // Decimal(4)
Decimal('-1')