Прежде всего, значения, которые вы получаете, действительно малы.xE+/-y
- это экспоненциальное представление чисел с плавающей запятой .
Таким образом, в действительности у вас есть что-то вроде этого: 6.349661E-05 == 0.00006349661
, что довольно близко к фактическому нулю.
Этопроблема возникает из-за точности чисел с плавающей точкой и потому, что на самом деле есть 2 ноля (-0 & +0) для чисел с плавающей запятой в программировании - именно так все и работает.Я не хочу перегружать этот ответ, если вы хотите прочитать что-то о поплавках - ссылка выше является хорошей отправной точкой.
Из-за этой проблемы float
чисел одно и то же число может быть представлено близким, но все же другим представлением типа float
.float->int
не очень подходит для случаев, когда вы хотите сравнить, скажем, не-внутренние степени, плюс вы не можете сравнивать Quaternion
числа, подобные этому - его компоненты (x, y, z, w)
имеют значения между 0 и 1. Решитьэту проблему вам либо нужно вручную «сравнить» с плавающей точкой с нулем машины, что довольно сложно для новичка, другое решение - использовать Mathf.Approximately
из Unity API.
Кстати, инспектор преобразования показывает вам чистый ноль, потому что он просто отбрасывает такие не влияющие цифры цифры вектора вращения.