为什么这个除法不正确?
我在用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