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)。
使用普通除法时
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)。