Python中的错误除法

-1 投票
1 回答
1895 浏览
提问于 2025-04-18 03:02

从观察中可以看到,l[u][0] 应该是 0.5,但它却返回了 0

u = 0
for j in range(n):
    if k == j:
        continue
    l[u][0] = -x[j] / (x[k] - x[j])
    l[u][1] = 1 / (x[k] - x[j])
    u = u + 1

screenshot

这是什么问题呢?

1 个回答

4

这个除法并不是“错误”的。它是整数除法,也叫向下取整除法。

当你用两个整数相除时,结果也是一个整数:

>>> 3/4
0
>>> 4/4
1

而当你用两个浮点数(也就是带小数的数字)相除时,结果会是一个浮点数:

>>> 3./4
0.75
>>> 4./4
1.0

需要注意的是,这个“问题”只出现在Python 2中。在Python 3中,普通的除法会自动变成浮点数:

>>> 3/4   # Python 3 behavior
0.75

而且在Python 2.2及之后的版本中,要进行整数除法需要使用第二个运算符:

>>> 3//4
0

撰写回答