在我的代码中:
class Vector(object):
@staticmethod
def distance(vector1, vector2):
return math.sqrt((vector2[0]-vector1[0])^2+(vector2[1]-vector1[1])^2)
有时,看似随意,我在调用此方法时遇到ValueError:math域错误。有什么问题?感谢。
答案 0 :(得分:15)
return math.sqrt((vector2[0]-vector1[0])**2+(vector2[1]-vector1[1])**2)
在Python和许多其他C语言中,^
代表bitwise-xor,它可能会创建一个负数,从而导致“数学域错误”。
顺便说一句,整个操作可以用the math.hypot
function来计算。
return math.hypot(vector2[0]-vector1[0], vector2[1]-vector1[1])
答案 1 :(得分:2)
我相信您的问题是使用xor ^而不是pow ** ...尝试将该行替换为:
return math.sqrt((vector2[0]-vector1[0])**2+(vector2[1]-vector1[1])**2)