Показать сообщение отдельно
Старый 30.03.2012, 11:02
Djay вне форума Посмотреть профиль Отправить личное сообщение для Djay Найти все сообщения от Djay
  № 1  
Ответить с цитированием
Djay

Регистрация: Feb 2012
Сообщений: 11
По умолчанию Округление при сложении/вычитании дробных чисел

С добрым утром! Есть задача перемещать объекты по кривой траектории слева направо и справа налево, меняя их скорость в зависимости от угла наклона. Столкнулся с проблемой при сложении и вычитании дробного числа. Код такой:

Код AS1/AS2:
var angle:Number = getAngle(object.x, object.direction);
var speed:Number = object.speed * Math.cos(angle / 180 * Math.PI);
object.x += object.direction ? -speed : speed;
 
trace("---");
trace(speed);
trace(object.x);
Результат при сложении исходное значение object.x = 70:

---
1.986476715483886
71.95
---
1.98779389282904
73.9
---
1.9902263669020062
75.85

Результат при вычитании object.x = 1410:

---
1.969615506024416
1408
---
1.9771634389942234
1406
---
1.9836407030825234
1404

Как видно во втором случае вычитаемое он округляет в большую сторону, а в первом:
70 + 1.986 = 71.95 как???

Подскажите, пожалуйста, в чем дело и как с этим бороться?