python 楼层除法运算符是如何实现的?

How is the python floor division operator implemented?

我知道 // 运算符是如何工作的,但幕后发生了什么?

我真正想知道的是:即使只对整数进行运算,它也会出现浮点精度错误吗?

Python 在计算 a // b 时不使用浮点运算(对于 a、b 整数)。经典长除法算法的实现,计算除ab时的商和余数。

大整数的实际除法在 x_divrem() 中实现,可在 longobject.c 中找到。

这是 Python 楼层除法的 C 实现(当 b 为正时):

int py_floor_div(int a, int b)
{
    if (a >= 0)
        return a / b;
    return (a - b + 1) / b;
}