距离公式上的Python数学域错误

时间:2011-04-22 19:06:04

标签: python math

在我的代码中:

class Vector(object):
    @staticmethod
    def distance(vector1, vector2):
        return math.sqrt((vector2[0]-vector1[0])^2+(vector2[1]-vector1[1])^2)

有时,看似随意,我在调用此方法时遇到ValueError:math域错误。有什么问题?感谢。

2 个答案:

答案 0 :(得分:15)

Use ** to raise to a power,即

    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)