Esto es debido a que en la máquina los números se almacenan como potencias de 2, potencias negativas en el caso de los decimales, por tanto para obtener el valor real lo hace por aproximación sumando una serie de potencias negativas hasta que se parezca al màximo sin pasarse, teniendo en cuenta que la precisión es limitada, es muy probable que no llegue nunca al valor exacto.No estoy seguro de que me haya explicado bien, pero puedes solucionar el problema utilizando la función FormatFloat() en lugar de FloatToStr(), ya que la primera te redondeará a la precisión que tu le digas.
Un abrazo
Bep.