Formatting floats in Objective C
Have you tried the %g
format specifier?
NSLog([NSString stringWithFormat:@"%g, %g", 45.0, 45.5]);
2010-01-12 19:54:38.651 foo[89884:10b] 45, 45.5
The problem with %g is that it doesn't have a way to specify the rounding increment (at least, not that I can find).
You can use NSNumberFormatter like this to achieve your result with a number that has an undefined number of decimal places.
double none = 5;double one = 5.1;double two = 5.01;double lots = 5.918286558251858392107584219;NSNumber *numberNone = [NSNumber numberWithDouble:none];NSNumber *numberOne = [NSNumber numberWithDouble:one];NSNumber *numberTwo = [NSNumber numberWithDouble:two];NSNumber *numberLots = [NSNumber numberWithDouble:lots];NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];formatter.roundingIncrement = [NSNumber numberWithDouble:0.01];formatter.numberStyle = NSNumberFormatterDecimalStyle;NSLog(@"%@",[formatter stringFromNumber:numberNone]);NSLog(@"%@",[formatter stringFromNumber:numberOne]);NSLog(@"%@",[formatter stringFromNumber:numberTwo]);NSLog(@"%@",[formatter stringFromNumber:numberLots]);
Output:
2012-02-15 16:21:17.469 AwakeFromNib[53043:f803] 52012-02-15 16:21:17.470 AwakeFromNib[53043:f803] 5.12012-02-15 16:21:17.470 AwakeFromNib[53043:f803] 5.012012-02-15 16:21:17.471 AwakeFromNib[53043:f803] 5.92