ПрограммированиеФорумОбщее

Почему 1.5f + 1.5f, а не 3.0f?(C# в Unity3d)

#0
7:06, 18 сен 2013

Здравствуйте! При разборе скриптов на C#, часто натыкаюсь, на подобные вещи. Когда вместо одного значения используется сумма из двух.
Примеры из разных скриптов:

"engineSource.volume = 0.4f + 0.6f * drivetrain.throttle;" 

"if (rpm >= maxRPM * (0.5f + 0.5f * throttleInput))"

Почему не:

"engineSource.volume = 1.0f * drivetrain.throttle;" 

"if (rpm >= maxRPM * (1.0f * throttleInput))" ?

Замечено только в Update() / FixedUpdate(). Сумма двух чисел, не обязательно равна 1.
Собственно в чем подвох? Замедление вычисления?
Кстати, менял на одно значение- все работает, разницы особой не увидел.
Я новичок в программировании. Заранее спасибо!

#1
7:12, 18 сен 2013

Это так смешно, что даже грустно.

Намекну - неужели вы в 3 классе прогуляли урок про очередность сложения/умножения?

#2
7:38, 18 сен 2013

2- Daemon19
  Да уж нелепо вышло. Просто зациклился. Всё равно спасибо!
+1 топик "По-ржать".)))

#3
8:43, 18 сен 2013

Пускай есть код(координаты спрайта):

x = 128;
y = 128;

Бывает координаты надо ставить на глаз или, например, арт поменяли:

x=128+32;
y=128+48;

И так несколько раз. Получаем такого вот уродца:

x = 128+32-16+8-2+22-1;
y = 128+48-4+1-44+36;

Записать одним числом лень. Иногда это бывает полезно - разбираясь в коде, который написал 2 года назад, понять откуда взялась магическое число 171 сложно, а вот  128+32-16+8-2+22-1 как-то можно проследить эволюцию :)

ПрограммированиеФорумОбщее

Тема в архиве.