我有一个Vector类代表三维空间中的一个点.该向量具有normalize(self, length = 1)向下/向上缩放向量的方法length == vec.normalize(length).length.
由于浮点数不精确,此方法的unittest 有时会失败.我的问题是,如何在正确实施方法时确保此测试不会失败?是否可以在不测试近似值的情况下进行?
其他信息:
def testNormalize(self):
vec = Vector(random.random(), random.random(), random.random())
self.assertEqual(vec.normalize(5).length, 5)
Run Code Online (Sandbox Code Playgroud)
这有时导致AssertionError: 4.999999999999999 != 5或者AssertionError: 5.000000000000001 != 5.
注意:我知道浮点问题可能在Vector.length属性中或在Vector.normalize().