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

Код 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 как???
Подскажите, пожалуйста, в чем дело и как с этим бороться?