Delphi tiene un tipo de dato específico, para no tener que lidiar con esos inconvenientes, que es "Currency". Básicamente es un decimal de 64 bits, con punto fijo y cuatro decimales. Los float, como su nombre lo indica, son de punto flotante, y lo que te sucedió es esperable. Trabajar con datos de punto flotante requiere entender como funcionan, tal como dice el siguiente artículo que te recomiendo leer:
https://docwiki.embarcadero.com/RADS...int_Arithmetic
Saludos.