Я займу противоположную позицию.
FLOATпредназначен для приблизительных чисел, таких как проценты, средние значения и т. д. Форматирование следует выполнять при отображении значений либо в коде приложения, либо с использованием FORMAT()функции MySQL.
Никогда не проверяй float_value = 1.3; Есть много причин, почему это не удастся.
DECIMALследует использовать для денежных значений. DECIMALизбегает второго округления, когда значение должно быть округлено до долларов / центов / евро / и т. д. Бухгалтеры не любят доли центов.
Реализация MySQL DECIMALдопускает 65 значащих цифр; FLOATдает около 7 и DOUBLEоколо 16. 7 обычно более чем достаточно для датчиков и научных расчетов.
Что касается «процента» - иногда я использую, TINYINT UNSIGNEDкогда хочу использовать только 1 байт памяти и мне не нужна большая точность; иногда я использовал FLOAT(4 байта). Тип данных не настроен специально для процентов. (Обратите внимание, что DECIMAL(2,0)это не может содержать значение 100, так что технически вам понадобится DECIMAL(3,0).)
Или иногда я использовал a, FLOATкоторый содержал значение от 0 до 1. Но тогда мне нужно было бы убедиться в умножении на 100, прежде чем отображать «процент».
Больше
Все три из «процент, средний, показатель» пахнут как поплавки, так что это будет мой первый выбор.
Один критерий для выбора типа данных ... Сколько копий значения будет существовать?
Если у вас есть таблица с миллиардами строк и столбцом для процентного значения, учтите, что TINYINTэто займет 1 байт (всего 1 ГБ), но FLOATзаймет 4 байта (всего 4 ГБ). OTOH, в большинстве приложений не так много строк, поэтому это может быть неактуально.
Как «общее» правило, «точные» значения должны использовать некоторую форму INTили DECIMAL. Неточные вещи (научные расчеты, квадратные корни, деление и т. Д.) Следует использовать FLOAT(или DOUBLE).
Кроме того, форматирование вывода обычно должно быть оставлено на передний план приложения. То есть, хотя «среднее» может вычисляться как «14,6666666 ...», на дисплее должно отображаться что-то вроде «14,7»; это дружелюбнее к людям. Между тем, у вас есть базовое значение, чтобы позже решить, что «15» или «14.667» является предпочтительным форматированием вывода.
Диапазон «0,00 - 100,00» может быть выполнен либо с FLOAT использованием выходного форматирования, либо с помощью DECIMAL(5,2)(3 байта) с предварительным определением того, что вам всегда будет нужна указанная точность .