Python中的错误除法
从观察中可以看到,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
这是什么问题呢?
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