繁体   English   中英

距离公式的Python数学域错误

[英]Python math domain error on distance formula

在我的代码中:

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

有时,看似随机,调用此方法时会收到ValueError:数学域错误。 怎么了 谢谢。

使用**来提高幂 ,即

    return math.sqrt((vector2[0]-vector1[0])**2+(vector2[1]-vector1[1])**2)

在Python和许多其他C派生的语言中, ^表示按位异或 ,它可能创建负数,从而导致该“数学域错误”。

顺便说一句,可以使用math.hypot函数来计算整个操作。

    return math.hypot(vector2[0]-vector1[0], vector2[1]-vector1[1])

我相信您的问题是使用xor ^而不是pow ** ...请尝试将该行替换为:

   return math.sqrt((vector2[0]-vector1[0])**2+(vector2[1]-vector1[1])**2)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM