Python小白问题:在Python中,-1 / 2 等于几?

想试试自己写 bin() 的功能,但是我写的有一步 n = n / 2 如果输入是负数会卡在 -1 / 2 = -1 死循环里。当然这个问题很好解决,但是我就想不通不带浮点的话 1/2=0 我能理解,为啥 -1/2 得到 -1 。

麻烦请从原理上解释一下,谢过。
Python小白问题:在Python中,-1 / 2 等于几?

14 回复

向下取整,这又不是四舍五入


在Python 3里,-1 / 2 的结果是 -0.5

这是因为Python 3的除法运算符 / 执行的是真除法(True Division),无论操作数是整数还是浮点数,结果都会返回一个浮点数。所以 -1 除以 2 就是 -0.5

如果你想要的是像Python 2或者C语言里那样的向下取整除法(Floor Division),也就是得到一个整数结果,你需要使用 // 运算符:

print(-1 // 2)  # 输出 -1

这里 -1 // 2 等于 -1,因为 // 是向负无穷方向取整。

简单说,想要小数结果用 /,想要整数商(向下取整)用 //

向下取整

python 是 floor
c 是只看整数

理解成在箭头向右的数轴上,左边最近的一个整数。

我来写个简单易懂的答案
-1 / 2 = (1 - 2) / 2 = 1/2 - 2/2 = 0 - 1 = -1

为什么我想打楼上那个简单易懂的答案呢?!逗我么。 Round 本来就有 round to zero , round down, round up 各种啊……

N/2 相当于 N>>2 。很多编译器都会这么优化掉。
所以-1 的补码全是 1 喽,有符号类型右移完还是全 1 喽

整数除法和浮点数除法是两回事啊……

python 文档有专门一节讲这个的


你们不要搞事情😂😂

不同语言的处理结果并不相同,所以不建议这样用

回到顶部