Я не знал, каюсь. Не знал что все вещественные числа считаются совершенно не правильно. Недавно столкнулся с этим в AS3 при вычислении текстурных координат. Долго копал, а потом узнал это:
http://www.yur.ru/science/computer/IEEE754.htm
В AS3 например такая операция 0.4 + 0.2 даёт результат 0.6000000000000001. Из-за этого текстурные координаты берутся от другого пикселя и картинка становится неверной. В моём случае достаточно было просто обрезать вычисленный результат. Наиболее быстрый способ это сделать такой: int(10000000*x) / 10000000. И делать надо это после каждой арифметической операции с вещественным числом x.
А вообще проблема очень серьёзная и решений на сегодняшний день нет. Подробности в статье по ссылке выше.