gpt4 book ai didi

python - 如何覆盖 Python 列表中 float 的比较?

转载 作者:行者123 更新时间:2023-11-28 21:50:47 25 4
gpt4 key购买 nike

我正在尝试检查两个法向量是否相等。我的法向量表示为一个三元素列表,一个元素对应每个空间坐标(X、Y 和 Z)。所有坐标都四舍五入到小数点后 4 位。我想检查两个表面是否具有相同的法线,所以我有如下内容:

if (surface1.normal in [surface2.normal, self.NegatedNormal(surface2.normal)]):
# do stuff here

问题是我的法线看起来像这样:

surface1.normal: [0.9947, 0.0155, 0.1015]
surface2.normal: [0.9947, 0.0155, 0.1014]

请注意,z 坐标偏移了 0.0001。那么有没有一种方法可以覆盖等于运算符以接受彼此在 0.0001 范围内的答案,这与其他数据结构中的比较兼容(如我的情况下的列表)?我有一种感觉,我必须编写自己的 __eq__ 方法,但我不太确定我将如何做到这一点。

此外,如果这不是最佳做法,那么在给定公差范围内比较两个 float 列表是否是更好的方法?

最佳答案

您可以编写自定义函数来执行此操作。例如:

def comp_floats(x, y, delta):
return abs(x - y) < delta

显然,您可以在函数本身中执行任何类型的错误更正,但这只是一个示例。

关于python - 如何覆盖 Python 列表中 float 的比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31435897/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com