Pergunta interessante.
Na verdade, eu não escolheria float no ambiente mysql. Muitos problemas no passado com precisão com esse tipo de dados.
Para mim, a escolha seria entre
int
e decimal(18,4)
. Eu vi exemplos do mundo real inteiros usados para representar valores de ponto flutuante. Todos os componentes internos das tabelas de dados do JD Edwards fazem isso. As quantidades são normalmente divididas por 10.000. Embora eu tenha certeza de que é mais rápido e menor na tabela, isso significa apenas que sempre teremos que CAST os ints para um valor decimal se quisermos fazer alguma coisa com eles, especialmente a divisão.
De uma perspectiva de programação, sempre prefiro trabalhar com
decimal
por preço (ou money
em RDBMSs que o suportam).