Удалить больше чем 2 конечных нуля - PullRequest
2 голосов
/ 19 сентября 2011

Я прочитал много вопросов о переполнении стека, я хочу удалить 2 или более двух конечных нулей после десятичной дроби. то есть:

12.00 ==> 12
12.30 ==> 12.30
12.35 ==> 12.35
12.345678 ==> 12.34

Ответы [ 3 ]

9 голосов
/ 19 сентября 2011
NSNumberFormatter *twoDecimalPlacesFormatter = [[[NSNumberFormatter alloc] init] autorelease];
[twoDecimalPlacesFormatter setMaximumFractionDigits:2];
[twoDecimalPlacesFormatter setMinimumFractionDigits:0];

return [twoDecimalPlacesFormatter stringFromNumber:number];
3 голосов
/ 19 сентября 2011

Мне нравится ответ @ dorada, вот полный тест:

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setMaximumFractionDigits:2];
[formatter setMinimumFractionDigits:0];

NSLog(@"12.00 ==> %@", [formatter stringFromNumber:[NSNumber numberWithFloat:12.00]]);
NSLog(@"12.30 ==> %@", [formatter stringFromNumber:[NSNumber numberWithFloat:12.30]]);
NSLog(@"12.35 ==> %@", [formatter stringFromNumber:[NSNumber numberWithFloat:12.35]]);
NSLog(@"12.345678 ==> %@", [formatter stringFromNumber:[NSNumber numberWithFloat:12.345678]]);

Вывод NSLog:

12.00 ==> 12
12.30 ==> 12.3
12.35 ==> 12.35
12.345678 ==> 12.35
0 голосов
/ 19 сентября 2011

Попробуйте:

NSLog(@"%0.2f", 12.345678);

Или сохранить его в строку NSString:

NSString *numberString = [NSString stringWithFormat:@"%0.2f", 12.345678];

Редактировать

Пропустил тот факт, что вам не нужны цифры нулевой дроби. Кредиты @dorada для этого:

NSNumber *number = [NSNumber numberWithFloat:12.00];
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setMaximumFractionDigits:2];
[formatter setMinimumFractionDigits:0];

NSString *numberString = [formatter stringFromNumber:number];
[formatter release];
...