Sometimes I have to convert from an unsigned integer value to a float. For example, my graphics engine takes in a
SetScale(float x, float y, float z) with floats and I have an object that has a certain size as an
unsigned int. I want to convert the unsigned int to a float to properly scale an entity (the example is very specific but I hope you get the point).
Now, what I usually do is:
unsigned int size = 5; float scale = float(size); My3DObject->SetScale(scale , scale , scale);
Is this good practice at all, under certain assumptions (see Notes)? Is there a better way than to litter the code with
<strong>Notes:</strong> I cannot touch the graphics API. I have to use the SetScale() function which takes in floats. Moreover, I also cannot touch the size, it has to be an unsigned int. I am sure there are plenty of other examples with the same 'problem'. The above can be applied to any conversion that needs to be done and you as a programmer have little choice in the matter.
There is an implicit conversion from
unsigned int to
float, so the cast is strictly unnecessary.
If your compiler issues a warning, then there isn't really anything wrong with using a cast to silence the warning. Just be aware that if
size is very large it may not be representable exactly by a
My preference would be to use
float scale = static_cast<float>(size);
but what you are doing is functionally equivalent and fine.