CodeGuy
CodeGuy

Reputation: 28907

Objective-C Float Rounding

How might I round a float to the nearest integer in Objective-C:

Example:

float f = 45.698f;
int rounded = _______;
NSLog(@"the rounded float is %i",rounded);

should print "the rounded float is 46"

Upvotes: 46

Views: 58730

Answers (7)

Lil C Big Durkee
Lil C Big Durkee

Reputation: 19

let's do tried and checkout

//Your Number to Round (can be predefined or whatever you need it to be)
float numberToRound = 1.12345;
float min = ([ [[NSString alloc]initWithFormat:@"%.0f",numberToRound] floatValue]);
float max = min + 1;
float maxdif = max - numberToRound;
if (maxdif > .5) {
    numberToRound = min;
}else{
    numberToRound = max;
}
//numberToRound will now equal it's closest whole number (in this case, it's 1)

Upvotes: 0

vp2698
vp2698

Reputation: 1805

For round float to nearest integer use roundf()

roundf(3.2) // 3
roundf(3.6) // 4

You can also use ceil() function for always get upper value from float.

ceil(3.2) // 4
ceil(3.6) // 4

And for lowest value floor()

floorf(3.2) //3
floorf(3.6) //3

Upvotes: 13

Arvind Kanjariya
Arvind Kanjariya

Reputation: 2097

If in case you want round float value in integer below is the simple method for rounding the float value in objective C.

int roundedValue = roundf(Your float value);

Upvotes: 3

Dave
Dave

Reputation: 3448

The recommended way is in this answer: https://stackoverflow.com/a/4702539/308315


Original answer:

cast it to an int after adding 0.5.

So

NSLog (@"the rounded float is %i", (int) (f + 0.5));

Edit: the way you asked for:

int rounded = (f + 0.5);


NSLog (@"the rounded float is %i", rounded);

Upvotes: 28

Jonathan Grynspan
Jonathan Grynspan

Reputation: 43472

Use the C standard function family round(). roundf() for float, round() for double, and roundl() for long double. You can then cast the result to the integer type of your choice.

Upvotes: 153

capikaw
capikaw

Reputation: 12946

The easiest way to round a float in objective-c is lroundf:

float yourFloat = 3.14;
int roundedFloat = lroundf(yourFloat); 
NSLog(@"%d",roundedFloat);

Upvotes: 6

NSResponder
NSResponder

Reputation: 16857

Check the manual page for rint()

Upvotes: 4

Related Questions