我怎么检查两个浮点数是相等的?

2024-05-23 18:33:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我写下面的程序,但我的程序不能检查两个数字是否相等。 没有错误, 如果有任何帮助,我将不胜感激。在

import math
def IsCollinding(ball1,ball2):
  distance=math.sqrt((((ball2[0]-ball1[0])**2)+((ball2[1]-ball1[1])**2)))
  print(type(distance))
  print(type(ball1[2]+ball2[2]))
  if(distance==ball1[2]+ball2[2]):
    print("Is Coliding")
  else:
    print("Not Coliding")
  print(distance)
  print(ball1[2]+ball2[2])
ball1=[2,2,3]
ball2=[11,11,9.7279220614]
IsCollinding(ball1,ball2)

输出:

^{pr2}$

Tags: import程序ifdeftype错误数字math
1条回答
网友
1楼 · 发布于 2024-05-23 18:33:09

你不能真的这么做。浮点数可能看起来相等,但实际上由于floating point precision而不同。但是,你可以作弊。如果两个数的差很小,我们可以称这两个数为“相等”。在

函数如下所示:

(x - y) < delta

其中delta是一个小数字。在Python中实现:

^{pr2}$

我在这里使用abs来获得差值的绝对值。我们避免用这种方式处理负数和xy参数的顺序。在

比较两个浮点数是最common gotchas之一,也是我们大多数人在某一时刻遇到的事情。google“comparing two floats python”应该已经返回了关于这个主题的大量有用的结果。在

相关问题 更多 >