函数int()向负无穷大(floor)舍入或为零?

zha*_*hen 5 python int floor

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

在我练习的时候,我想int(value)也会做一些事情floor,这些事情int(-1.5) == -1应该-2在我的脑海里.

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

Mar*_*ers 4

int()去掉小数部分;它不进行任何舍入。从文档中:

\n\n
\n

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

\n
\n\n

将 a 转变float为 anint这是完全合乎逻辑的行为。这不是分隔、地板或其他。

\n\n

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

\n\n
\n

结果是对结果应用 \xe2\x80\x98floor\xe2\x80\x99 函数的数学除法

\n
\n\n

其中math.floor()记录为:

\n\n
\n

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

\n
\n\n

我认为这里没有矛盾;除法楼层,将浮点数转换为整数截断。

\n