5

我看到为什么 -1/2 在 C++ 中被评估为 0,但在 Python 中被评估为 -1?表示 Python 中的整数除法向无穷大取整,即floor应用于结果。

我认为在练习时int(value)也会做类似的事情,这应该会在我的脑海中出现。floorint(-1.5) == -1-2

integer division所以问题是:为什么规则和函数之间不一致int()?有什么合理的解释吗?

4

2 回答 2

4

int()删除小数部分;它不做任何舍入。从文档中:

如果 x 是浮点数,则转换将向零截断。

将 afloat变成 aint这完全是合乎逻辑的行为。这不是划分,地板或其他。

否则,//地板除法运算符显然会做地板,而不是截断。在 Python 2 中,对于两个整数操作数,/除法也是楼层。文档再次:

结果是数学除法,将“地板”函数应用于结果

其中math.floor()记录为:

以浮点数形式返回x的下限,即小于或等于x的最大整数值。

我认为这里没有不一致之处;除法层,将浮点数转换为整数截断。

于 2014-02-28T16:42:08.923 回答
0

也许round()withndigits = 0更接近你的期望。但round()不返回整数,而是浮点数:请参阅文档

于 2014-02-28T16:51:44.553 回答