Hola martin, este tema ya se ha tratado en el foro. El problema está es en que los tipos de datos con coma flotante se almacenan en potencias de dos, y si almacenas un número que no es una potencia de 2 lo que hace es guardar el número que más se aproxima a el. por eso si tu quieres poner en una variable tipo float 12,12 lo más seguro es que te guarde 12,1199999999 o algo parecido. Esto se puede evitar utilizando tipos de datos de con más precisión como el tipo double, long double, Extended ...
Pero al final en todos el problema puede ser el mismo, sólo que pueden afinar un poco más.
Otra solución si vas a utilizar números sin muchos decimales puede ser utilizar variables de tipo Currency, en la cual esto no ocurre.
Espero que te sirva. Un Saludo. Agur