Losing float precision

You have defined k in terms of fractional steps, but the variable steps is declared as an unsigned long. That is, the variable steps will always hold an integer number of steps, no fractions.

Besides, maybe I do not really understand the problem. In the sentence "I know it is very close, but I need it a little bit more precise," the word "it" occurs twice but I don't really understand what is being referenced.