Es un problema de los ordenadores, el tema de la precision. La culpa la tiene el binario, y la forma de representar los numeros decimales en binario. El problema esta en que en binario quizas para representar el numero decimal se necesitan mas bits de los que corresponde al tipo de dato que lo almacena. Asi que por ejemplo puede ser que la representacion binaria de 19.96 con el numero de bits que usa PHP sea 19.960000000000000000000003.
Prueba a usar
http://www.php.net/manual/en/ref.bc.php http://es.php.net/manual/en/language.types.float.php