número flutuante não é o número esperado após a subtração

Eu tenho a seguinte declaração:

float diff = tempVal - m_constraint.getMinVal();

tempVal é declarado como um float e ogetMinVal() retorna um valor flutuante.

Eu tenho a seguinte impressão:

diff = 0.099999905, tempVal = 5.1, m_constraint.getMinVal () = 5.0

Espero que odiff é0,1 mas não o número acima. Como fazer isso?