开发者

Int or Unsigned Int to float without getting a warning

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;
flo开发者_如何学JAVAat 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.


My preference would be to use static_cast:

float scale = static_cast<float>(size);

but what you are doing is functionally equivalent and fine.


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 float.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜