Почему сравнение одинаковых чисел выдает false?
У меня есть этот код:
bool areEqual = tiles[i].transform.position.z == transform.position.z;
Debug.Log($"{tiles[i].transform.position.z} == {transform.position.z} is {areEqual}")
который выводит в консоль:
-1 == -1 is False
Я не могу понять почему сравнение между -1 и -1 дает ответ неверно.
Ответы (1 шт):
Автор решения: RiotBr3aker
→ Ссылка
Одинаковые числа с плавающей точкой могут иметь погрешность, для решения таких задач используется слегка другой подход, нежели оператор сравнения:
bool areEqual = Math.Abs(num1 - num2) < delta;
Поскольку тут конкретно вопрос по Unity, то можно воспользоваться специальным методом из библиотеки:
public static bool Approximately(float a, float b);
Использование:
bool areEqual = Mathf.Approximately(tiles[i].transform.position.z, transform.position.z)