А>по-моему, 12.5 — не настолько большая точность чтобы у float'а были проблемы с его хранением....
Дело не в точности числа (похоже вы понимаете его как количество десятичных знаков после запятой), а в количестве бит которое отводится на представление этого числа в памяти. Некоторые десятичные числа вообще невозможно записать точно в двоичной системе, требуется бесконечное количество бит. Посмотрите на двоичную запись 12.5 — сколько требуется бит для точной записи? Сравните с размером float.