On pre-C99 compilers, the same stack space would often be used for each iteration, so there actually was no performance impact for declaring a variable in a loop, since it was not necessary to allocate more stack space during successive iterations. I imagine that C99 compilers do something similar, but I don't know for sure.
Most compilers will just optimize this away. The worst case is that you're creating a new float on the stack, which is an extremely inexpensive operation on most architectures. There may be cases where it is even be faster to declare the variable immediately before use. Though, if your program is that performance sensitive, you should probably be using assembly language to begin with.
C99 and later specify that variables are scoped to the loop that they are created in, while earlier versions of C are ambiguous. Different compilers implement it differently. This is important to be aware of because you may run into naming conflicts on pre C99 compilers if a variable of the same name exists in the scope of the function containing the loop (since they will treat the variable as being scoped to the function).
Personally, I declare variables in loops all the time. It performs well and clearly indicates that the variables exist to be used in that loop. It's a matter of structuring your code in a way that clearly indicates the intentions of that code.