Reputation: 17496
Say I've got
SDL_Rect rect;
rect.x = 5; // rect.x is of type "Uint16"
int y = 11;
and I want to perform the operation rect.x/y
.
I want to get the result as a floating point number and then round up to the nearest int
.
Something like this:
float result = rect.x/y;
int rounded = ceil(result);
How should I do this?
Upvotes: 0
Views: 389
Reputation: 72431
You can do this without any floating point types. If x
and y
are positive integers, then x divided by y, rounded up is (x+y-1)/y
.
Upvotes: 0
Reputation: 67283
You need to cast your variables.
float result = (float)rect.x / (float)y;
int rounded = ceil(result);
Upvotes: 0
Reputation: 27864
Cast either rect.x
or y
to float, and then do the division. This will force the entire division operation to take place in floating point.
float result = rect.x/(float)y;
int rounded = ceil(result);
Upvotes: 4