У меня есть класс Vector , который представляет точку в трехмерном пространстве. Этот вектор имеет метод normalize (self, length = 1)
, который масштабирует вектор вниз / вверх до length == vec.normalize (length) .length
.
Модульное тестирование для этого метода иногда дает сбой из-за неточности чисел с плавающей запятой. У меня вопрос: как я могу убедиться, что этот тест не завершился неудачно, если методы реализованы правильно? Можно ли сделать это без тестирования приблизительного значения?
Дополнительная информация :
def testNormalize(self):
vec = Vector(random.random(), random.random(), random.random())
self.assertEqual(vec.normalize(5).length, 5)
Это иногда приводит либо к AssertionError: 4.999999999999999! = 5
или AssertionError: 5.000000000000001! = 5
.
Примечание : мне известно, что проблема с плавающей точкой может быть в свойстве Vector.length
или в Vector.normalize ()
.