Да я понимаю это. Я знал что число newvalue не достигнет oldvalue, но так можно добится замедление движения в конце. Это получается сначало почти мгновенный перенос, а потом замедление. У меня не наблюдалось погрешности числа newvalue, да я и не использовал голую функцию, ставил условия, проверку на расстояние как ты описал выше. Вообще лучший вариант это работа с целыми числами
.