[英]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.