How to round decimal to 2 digits in iphone?

How can we round decimal numbers to two digits in iphone?

For example,

  • 5345 → 53

  • 570 → 57

  • 89523 → 90

I tried using nsformatter for this, and here is the code I used,

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; [formatter setNumberStyle:NSNumberFormatterDecimalStyle]; [formatter setMaximumIntegerDigits:2]; [formatter setRoundingMode: NSNumberFormatterRoundUp]; NSString *numberString = [formatter stringFromNumber:[NSNumber numberWithInt:570]]; [formatter release]; NSLog(@"%@",numberstring); 

I continue to get the value 70 even after changing the rounding mode to different parameters. Please help me with this.

Thanks, Vinod.

+7
source share
5 answers

Use this simple code instead of the formatter;

 myFloat = roundf(100 * myFloat) / 100.0; 

Hope this helps.

Or you can use this

 float roundedValue = round(2.0f * number) / 2.0f; NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; [formatter setMaximumFractionDigits:2]; [formatter setRoundingMode: NSNumberFormatterRoundDown]; NSString *numberString = [formatter stringFromNumber:[NSNumber numberWithFloat:roundedValue]]; [formatter release]; 
+11
source

Since you are looking for rounding decimal digits, you should actually provide a float for this and set the maximum fractional digits to 2. You are probably looking for this,

 NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; [formatter setNumberStyle:NSNumberFormatterDecimalStyle]; [formatter setMaximumFractionDigits:2]; [formatter setRoundingMode: NSNumberFormatterRoundHalfUp]; NSString *numberString = [formatter stringFromNumber:[NSNumber numberWithFloat:570.57018]]; [formatter release]; NSLog(@"%@",numberString); 
+4
source

The number of rounding to 2 decimal places in C , maybe this link helps.you can convert the result of the float back to nsnumber

0
source

Deepak's answer is probably exactly what you need, but I just provide another option for options. I assume that you are using NSNumber values, so someNumber will be of this type in the example:

 NSString *numberString = [NSString stringWithFormat:@"%.2f", [someNumber floatValue]]; // this converts the NSNumber to a float, then formats the float in a string; NSNumber *formattedNumber = [NSNumber numberWithFloat:[numberString floatValue]]; // this extracts the float from the string and puts it back as an NSNumber 
0
source

There seems to be no direct way to round an integer

But you can still do it. You need to do extra work to convert the whole number to a fractional number and some trick to remove the "0." from the value of the float.

 NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; [formatter setNumberStyle:NSNumberFormatterDecimalStyle]; [formatter setFormatterBehavior:NSNumberFormatterBehavior10_4]; [formatter setRoundingMode:NSNumberFormatterRoundHalfUp]; [formatter setMaximumFractionDigits:2]; int n = 570; float f = [[NSString stringWithFormat:@"0.%d", n] floatValue]; NSNumber *number = [NSNumber numberWithFloat:f]; NSString *str = [formatter stringFromNumber:number]; [formatter setPositivePrefix:@"0."]; number = [formatter numberFromString:str]; [formatter release]; 
0
source

All Articles