It is well known that in C, floating point literals (e.g. 1.23) have type double. As a consequence, any calculation that involves them is promoted
1.23
double
You can cast the defined constants to (float) wherever they are used, the optimizer should do its job. This is a portable solution.
(float)
#define LIMIT 2.5 if (x < (float)LIMIT) ...