函数int()是向负无穷舍入(向下取整)还是向零舍入?

5 投票
2 回答
3406 浏览
提问于 2025-04-17 20:22

我看到有个问题提到,为什么在C++中-1/2的结果是0,而在Python中是-1。这个问题提到,Python中的整数除法是向上取整的,也就是说,结果会向下取整。

我原以为int(value)这个函数也会像floor那样处理,但实际上我发现int(-1.5)的结果是-1,这让我有点困惑,因为我本来以为应该是-2。

所以我的问题是:为什么整数除法和int()函数的规则不一致呢?有没有什么合理的解释呢?

2 个回答

0

也许使用 round() 函数,并把 ndigits 设置为 0,会更接近你想要的结果。不过要注意,round() 函数返回的不是整数,而是浮点数。你可以查看 官方文档 了解更多信息。

4

int() 这个函数会去掉小数部分,但它并不会进行四舍五入。从官方文档来看:

如果 x 是浮点数,转换时会向零方向截断。

把一个 float 转换成 int 这样的行为是很合理的。这并不是除法、向下取整或其他操作。

// 这个向下取整的除法运算符显然是会向下取整,而不是截断。在 Python 2 中,对于两个整数操作数,/ 的除法也会向下取整。再次参考官方文档

结果是数学除法的结果,并对结果应用了“向下取整”函数。

math.floor()的说明是:

返回 x 的向下取整值,作为浮点数,返回小于或等于 x 的最大整数值。

我认为这里没有矛盾;除法是向下取整,而将浮点数转为整数是截断。

撰写回答