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.
Rapaz eu ia escrever exatamente isso, para não usar float com valores monetários. Se usa muito o float em computação científica pois são feitos muitos cálculos e é necessário armazenar os números com a maior precisão possível para que os erros de truncamento não se propaguem de forma deletéria no resultado final, víde o exemplo do Excel 2007 que dava erros grosseiros devido a isso. Agora se não vai fazer cálculos complexos com a quantidade o ideal é evitar o float.