float
não é adequado para valores monetários. Os números de ponto flutuante são imprecisos e possuem várias nuances difíceis de perceber. Se quiser se aprofundar mais, aqui tem vários links sobre o assunto - e cada um desses links tem vários outros, são horas de diversão garantida :-)
Para trabalhar com dinheiro, o melhor é usar outro tipo. Muitas linguagens possuem algum tipo nativo (geralmente chamado decimal
), mas não é o caso do PHP, então o jeito seria usar uma biblioteca externa.
Ou se for um caso mais simples, pode usar números inteiros que guardam a quantidade de centavos, por exemplo. Então em vez de 1.42
, use 142
. Lembrando que ainda tem que se preocupar com arredondamentos, e cada caso é um caso.