为什么这个除法不正确?

7 投票
3 回答
8384 浏览
提问于 2025-04-16 04:56

我在用Python的时候遇到了一个奇怪的问题:除法运算结果不对。

print pointB[1]
print pointA[1]
print pointB[0]
print pointA[0]
print  (pointB[1]-pointA[1]) / (pointB[0]-pointA[0])

这是得到的结果:

100
50
100
40
0

谢谢!

3 个回答

3

这是在Python中整数除法的工作原理。你可以使用浮点数,或者在计算时把数字转换成浮点数:

float(pointB[1]-pointA[1]) / (pointB[0]-pointA[0])
9

这个做法是对的。

50除以60等于0。

也许你想要的是50.0除以60.0等于0.83333333333333337,你可以把你的变量转换成浮点数,这样就能得到这个结果:

print  float(pointB[1]-pointA[1]) / (pointB[0]-pointA[0])
18

上面的行为在Python 2中是这样的。在Python 3中,/的行为已经修正了。在Python 2中,你可以使用:

from __future__ import division

然后使用/来得到你想要的结果。

>>> 5 / 2
2
>>> from __future__ import division
>>> 5 / 2
2.5

因为你是在除以两个整数,所以结果也是一个整数。

或者,你可以把其中一个数字改成float类型。

>>> 5.0 / 2
2.5

撰写回答