Maria Ines Parnisari
Maria Ines Parnisari

Reputation: 17496

c++ integer division

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

Answers (3)

aschepler
aschepler

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

Jonathan Wood
Jonathan Wood

Reputation: 67283

You need to cast your variables.

float result = (float)rect.x / (float)y;
int rounded = ceil(result);

Upvotes: 0

David Yaw
David Yaw

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

Related Questions