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 float()?
Notes: 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 inttofloat, 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
sizeis very large it may not be representable exactly by afloat.