Неточность при присваивании

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Неточность при присваивании

Сообщение johnquincy 13 апр 2013, 22:54

Доброго времени суток всем форумчанам!

Столкнулся с малопонятным мне поведением оператора присваивания, которое и прошу объяснить. Вот элементарный кусок кода:

Синтаксис:
Используется javascript
characterModel.eulerAngles.y = 90;


При таком присвоении переменная characterModel.eulerAngles.y по факту никогда не оказывается равной 90. Значения, как правило, колеблются в диапазоне 90.00002-90.00005. Разница невелика, но критична для операторов сравнения. Одновременно с этой, пардон, лажей все присваивается замечательно, если делаю несколько иначе:

Синтаксис:
Используется javascript
characterModel.eulerAngles = Vector3( 0,90,0 );


Интуитивно (не более того) понимаю, что все дело в типах данных. Может быть, кто-то подскажет, почему так происходит? И, кстати, как же мне изменять угол поворота объекта относительно одной какой-то оси, не трогая остальные?

С уважением,
j.q.
johnquincy
UNец
 
Сообщения: 13
Зарегистрирован: 13 апр 2013, 21:59

Re: Неточность при присваивании

Сообщение Neodrop 13 апр 2013, 23:36

это результат неточности float. Используйте приблизительное сравнение.
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Неточность при присваивании

Сообщение johnquincy 14 апр 2013, 00:21

Большое спасибо за наводку. Совсем упустил из вида особенности float как типа данных. Сказывается недостаток образования :) Возможно, кому-то пригодится статья:
http://habrahabr.ru/post/112953/
И тем не менее, есть в IT волшебство и фантастика. После непродолжительных танцев с бубном я попробовал написать ту же самую строку с "инженерной" формой записи константы. Все заработало, как я предполагал изначально. Но вот для полноты эксперимента потом опять написал как десятичное число... и никаких лишних n-тысячных. Это что, компилятор так отреагировал на мои действия?..

С уважением,
j.q.
johnquincy
UNец
 
Сообщения: 13
Зарегистрирован: 13 апр 2013, 21:59

Re: Неточность при присваивании

Сообщение artk 14 апр 2013, 02:11

johnquincy писал(а):http://habrahabr.ru/post/112953/

Спасибо, очень полезная статья.
Аватара пользователя
artk
Старожил
 
Сообщения: 749
Зарегистрирован: 22 май 2011, 12:22


Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 22