Python 为什么-ve int的除法值不同于+;你有吗?

Python 为什么-ve int的除法值不同于+;你有吗?,python,python-2.7,integer-division,Python,Python 2.7,Integer Division,我试过了。我知道使用整数并进行除法运算只会返回商的整数值,截断小数部分。 关于这一点: 3/2=1 听起来很好。。。然而,当股息为负时,我很难理解幕后发生了什么 -3/2=-2 以下是输出: 浮点值没有被截断-它是向下舍入的,即向负无穷大方向舍入 那里的整数除法只是取最后得到的数字的底数 3/2 -> floor(1.5) -> 1 -3/2 -> floor(-1.5) -> -2 自然数和实数都具有(n+d)/d等于(n/d)+1的性质。实数还有一个附加属性(

我试过了。我知道使用整数并进行除法运算只会返回商的整数值,截断小数部分。 关于这一点:

3/2=1

听起来很好。。。然而,当股息为负时,我很难理解幕后发生了什么

-3/2=-2

以下是输出:


浮点值没有被截断-它是向下舍入的,即向负无穷大方向舍入

那里的整数除法只是取最后得到的数字的底数

3/2  -> floor(1.5)  ->  1
-3/2 -> floor(-1.5) -> -2

自然数和实数都具有(n+d)/d等于(n/d)+1的性质。实数还有一个附加属性(-n)/d等于-(n/d)。可以将整数定义为具有上述任一属性,但不能同时具有这两个属性

虽然第一个属性通常是两个属性中更有用的,但在硬件和软件中实现带负红利的整数除法的最简单方法是反转红利的符号,然后反转结果的符号。早期的语言以这种方式执行整数除法,因为它很容易;事实上,许多程序都是为了期望这种行为而编写的,许多语言延续了这一传统

可以说,语言最好使用“word”操作符(例如,
divt
)来除法,而不是标点符号。这将允许代码指定它是想要一个截断的除法还是一个累加的除法,愿意让编译器任意选择在任何给定场景中最快的除法,或者愿意让编译器用负数做任何事情,以换取正数更快地工作(例如,在具有“unsigned divide”指令比“signed divide”指令快,这样的运算符将允许CPU使用“unsigned”指令。不过,我不知道当前有哪种语言可以做到这一点。

这是一种设计选择: