Eu vou tomar a posição oposta.
FLOATé para números aproximados, como porcentagens, médias etc. Você deve formatar ao exibir os valores, no código do aplicativo ou usando a FORMAT()função do MySQL.
Nunca teste float_value = 1.3; existem muitas razões pelas quais isso irá falhar.
DECIMALdeve ser usado para valores monetários. DECIMALevita um segundo arredondamento quando um valor precisa ser arredondado para dólares / centavos / euros / etc. Contadores não gostam de frações de centavos.
A implementação do MySQL DECIMALpermite 65 dígitos significativos; FLOATdá cerca de 7 e DOUBLEcerca de 16. 7 geralmente é mais que suficiente para sensores e cálculos científicos.
Quanto à "porcentagem" - às vezes eu uso TINYINT UNSIGNEDquando quero consumir apenas 1 byte de armazenamento e não preciso de muita precisão; às vezes eu usei FLOAT(4 bytes). Não há tipo de dados ajustado especificamente para porcentagem. (Observe também que isso DECIMAL(2,0)não pode conter o valor 100, portanto, tecnicamente, você precisaria DECIMAL(3,0).)
Ou, às vezes, usei um FLOATque mantinha um valor entre 0 e 1. Mas, então, precisaria me certificar de multiplicar por 100 antes de exibir a "porcentagem".
Mais
Todos os três "percentual, média, taxa" cheiram a carros alegóricos, então essa seria minha primeira escolha.
Um critério para decidir sobre o tipo de dados ... Quantas cópias do valor existirão?
Se você tiver uma tabela de bilhões de linhas com uma coluna para uma porcentagem, considere que TINYINTisso levaria 1 byte (total de 1 GB), mas FLOATlevaria 4 bytes (total de 4 GB). OTOH, a maioria dos aplicativos não possui muitas linhas, portanto isso pode não ser relevante.
Como regra geral, valores "exatos" devem usar alguma forma de INTou DECIMAL. Coisas inexatas (cálculos científicos, raízes quadradas, divisão, etc.) devem usar FLOAT(ou DOUBLE).
Além disso, a formatação da saída geralmente deve ser deixada para o front end do aplicativo. Ou seja, mesmo que uma "média" possa ser calculada como "14.6666666 ...", a exibição deve mostrar algo como "14.7"; isso é mais amigável para os seres humanos. Enquanto isso, você tem o valor subjacente para decidir posteriormente que "15" ou "14.667" é a formatação de saída preferível.
O intervalo "0,00 - 100,00" pode ser feito com FLOAT e usar a formatação de saída ou com DECIMAL(5,2)(3 bytes) com a pré-determinação de que você sempre desejará a precisão indicada .