Well, assuming v1.y and so forth are floats, it doesn't make a difference in this particular case because the compiler will promote ints to floats anytime an int and a float are added/multiplied/whatever.
But before any promotion is done, in C/C++ 16 is an int, 16.0f is a float, and 16.0 is a double.
So, 3 / 2 == 1, because 3 and 2 are ints so the compiler does integer division (truncates the fractional part). But 3.0f / 2.0f == 1.5f. Also 3.0f / 2 or 3 / 2.0f give 1.5f, because the compiler promotes the int to a float.