我知道 // 运算符是如何工作的,但是幕后发生了什么?
我真正想知道的是:即使只对整数进行运算,它是否也会出现浮点精度错误?
我知道 // 运算符是如何工作的,但是幕后发生了什么?
我真正想知道的是:即使只对整数进行运算,它是否也会出现浮点精度错误?
Python 在计算时不使用浮点运算a // b
(对于 a、b 整数)。经典长除法算法的实现,用于计算除a
和时的商和余数b
。
大整数的实际除法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;
}