0 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)
Run Code Online (Sandbox Code Playgroud)
输出:
<type 'float'>
<type 'float'>
Not Coliding
12.7279220614
12.7279220614
Run Code Online (Sandbox Code Playgroud)
你真的不能这样做.浮点可能看起来相等,但由于浮点精度,实际上是不同的.但是,你可以作弊.如果两者之间的差异非常小,我们可以将两个数字称为"相等".
该函数如下所示:
(x - y) < delta
Run Code Online (Sandbox Code Playgroud)
delta数量在哪里.在Python中实现:
def almost_equal(x, y, delta=1e-10):
return abs(x - y) < delta
Run Code Online (Sandbox Code Playgroud)
我用abs这里得到差异的绝对值.我们避免以这种方式处理负数和x和y论证的顺序.
比较两个浮点数是最常见的陷阱之一,并且是我们大多数人在某一时刻遇到的问题.谷歌搜索" 比较两个浮动蟒蛇 "应该已经返回了关于这个主题的大量信息性结果.
| 归档时间: |
|
| 查看次数: |
1103 次 |
| 最近记录: |