@zipatiki

Почему переменная float z=0 меняет значение на -2,384186E-07?

Имеются переменные типа float X=0 и Z=0. Но при выводе данных Z начала (именно начал, сперва этого не было) принимать значение -2,384186E-07. В итоге получается x=:0 z=:-2,384186E-07. Изменений в коде не производилось, язык C#
  • Вопрос задан
  • 165 просмотров
Решения вопроса 1
DanceM
@DanceM Куратор тега Unity Game Engine
Кто хочет -ищет способ, кто не хочет -ищет причину
Всё дело в том, как float хранит числа. Они не совсем точные, на самом деле, и ваше число в обычном виде это -0.0000002384186, т.е. число близкое к нулю. Именно потому float'ы нельзя сравнивать напрямую, типа foo == bar, и в таких случаях используется в Unity Mathf.Approximately(foo, bar)

Если это число где-то используется в transform, указывает позицию или поворот, то это нормально, с float'ами так бывает, я бы на вашем месте не стал обращать на это внимание и строил бы механику с учетом этих особенностей (что я собсно всегда и делаю).

Здесь больше информации:
Наглядное объяснение чисел с плавающей запятой
Что нужно знать про арифметику с плавающей запятой
Машинный ноль
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы