python3 正在使用除法和底除法生成两个不同的结果

python3 is generating two different results using division and floor division

使用普通除法时

9999999999999999 / 2

返回值:5000000000000000.0

以及使用楼层划分时

9999999999999999 // 2

返回值:4999999999999999

我正在使用 python 3.8.1 谁能解释一下? 提前致谢

int 操作数 returns 上的 / 运算符和 float。假设一个 IEEE 754 兼容系统,float 有 53 位精度。因此,它不能准确表示商 4999999999999999.5,这需要 54 位 (10001110000110111100100110111111000000111111111111111.1)。所以这个值四舍五入到 5000000000000000.0.

int 操作数 returns 和 int 上的 // 运算符。 Python 3 int 类型没有范围限制,所以可以精确表示 9999999999999999。将该数字减半得到 4999999999999999(丢弃余数 1)。