0
>>>导入十进制>>>十进制。十进制(-7)//4十进制('-1')#结果四舍五入为0。>>> -7 // 4-2#结果舍入为负无穷大。

为什么带有python十进制的floordiv运算符会向0舍入,而不是像floordif运算符对所有其他类型那样向负无穷大舍入?

10
  • 2
    这个文档在“Decimal对象的算术与整数和浮点的算术之间有一些小的区别”后面的部分说是这样的,但它没有说为什么?. 评论 1月7日0:16
  • 我不知道作者的动机是什么十进制的模块是,但也许它正在保留结合性:(-7) // 4=>-2-(7 // 4)=>-1,同时十进制的。小数(-7)//4=>十进制('-1')-(十进制。十进制(7)//4)=>十进制('-1') 评论 1月7日0:30
  • 是的,我看到文档中提到了这一点,但我很好奇为什么会做出这个决定。 评论 1月7日0:33
  • 这个十进制的模块完全实现了IBM十进制算术规范就是这样规定的。询问IBM:^) 评论 1月7日0:35
  • 1
    @罗伯特·哈斯这就是我的意思,是的。是的,有一个标准的关联性定义,它严格限制为二进制操作。您链接到它:-) 评论 1月7日22:52

1答案1

重置为默认值
4

发件人BPO-12005型(格式化我的):

规范,其中十进制的基于模块要求有一个具有以下语义的“余数”操作十进制的%操作(即x%年有…的标志x个). 然而,规范并没有说明指定的操作应该如何映射到语言结构。

所以选择是(1)离开%对于十进制的对象未实现,并提供单独的“余数”方法,或(2)映射%十进制的的余数运算,并接受%的语义浮动十进制的.

也许做出了错误的选择。但它现在就在那里,对我来说,它并没有那么明显的错误,值得大肆抨击%对于十进制的物体。

马克·迪金森(2011年5月5日)

上面的帖子是关于%,但这也适用于//.

你的答案

单击“发布您的答案”,表示您同意我们的服务条款并确认您已阅读我们的隐私政策.

不是你想要的答案吗?浏览标记的其他问题问你自己的问题.