Objective-C Float Rounding
How might I round a float to the nearest inte开发者_如何转开发ger in Objective-C:
Example:
float f = 45.698f;
int rounded = _______;
NSLog(@"the rounded float is %i",rounded);
should print "the rounded float is 46"
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.
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);
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
The easiest way to round a float in objective-c is lroundf
:
float yourFloat = 3.14;
int roundedFloat = lroundf(yourFloat);
NSLog(@"%d",roundedFloat);
Check the manual page for rint()
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);
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)
精彩评论