The first problem:
I need integer positions so eventually i would need to cast them to int and i never use it as float, so rounding down or up doesn't really matter to me.
That's a valid need, but you still want to do all your math using floating point numbers since your inputs are floats. When all of your math has been completed, then cast the result into an int (or even better, use a rounding function! casting 1.9f into an int will result in 1, not 2.).
Consider this example:
float 1/3 = 0.3333333333
1/3 + 1/3 + 1/3 = 1.0
If you cast 1/3 as a float, then do the calculations, you get 1.0, a correct answer.
(int)1/3 = 0.0
1/3 + 1/3 + 1/3 = 0.0 (wrong!)
This is a simple example, but the point is that the fractional numbers matter and add up. The same math equations can yield different results. The more fractions you write off, the more off your calculations will be. This can lead to some weird, unexpected bugs later on and you'll be squinting at your code for hours, saying "There is no error here, the math equations are perfect! The logic checks out!"