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

时间:2014-02-28 16:41:10

标签: python int floor

我看到Why is -1/2 evaluated to 0 in C++, but -1 in Python?表示Python中的整数除法向无穷大舍入,即floor应用于结果。

我认为int(value)也会做类似floor的事情,而我在实践中得到int(-1.5) == -1,我的脑海里预计会-2

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

2 个答案:

答案 0 :(得分:4)

int()删除小数部分;它没有做任何舍入。来自documentation

  

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

要将float转换为int,这完全是合乎逻辑的行为。这是分区,地板或其他。

//楼层划分运营商否则显然 楼层,而不是截断。在Python 2中,对于两个整数操作数,/除法也是底层。再次documentation

  

结果是数学除法的结果,“floor”函数应用于结果

其中math.floor()记录为:

  

x 作为浮动返回 x 的最低值,小于或等于 x 的最大整数值。

我认为这里没有矛盾;划分楼层,将浮动转为整数截断。

答案 1 :(得分:0)

round() ndigits = 0round()的关系可能更接近您的预期。但{{1}}不返回整数,而是返回浮点数:请参阅the documentation

相关问题