@zipatiki

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

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

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

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

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

Войти через центр авторизации
Похожие вопросы
от 50 000 до 100 000 руб.
ArtMind Technologies Москва
от 140 000 до 180 000 руб.
от 30 000 до 100 000 руб.
09 дек. 2019, в 20:26
2500 руб./за проект
09 дек. 2019, в 20:13
5000 руб./за проект
09 дек. 2019, в 19:33
500 руб./за проект