Были заданы аналогичные вопросы, но я считаю, что предлагаемые решения не работают с последним iOS SDK или не совсем применимы в данном конкретном случае.
Я вызываю метод с использованием NSNotification, который форматирует число с символами группировки в UILabel, поскольку оно вводится с использованием цифр от ввода с кнопки. Он отлично работает и для целых и десятичных чисел - до тех пор, пока после десятичной точки не вводятся нули. Например, если введено 2000, оно отображается как 2000, так как оно вводится просто отлично. Если введено значение 23.345, то это тоже нормально отображается. Любые вычисления, сделанные на этих числах, оказываются правильными. Но невозможно ввести 0,0001 или 0,2340007! Он просто не будет принимать и добавлять нули после десятичной точки.
Я получил оригинальную идею кода из другого поста здесь в stackoverflow:
NSString *currentText = [display_ text];
currentText = [currentText stringByReplacingOccurrencesOfString:@","
withString:@""];
currentText = [currentText stringByReplacingOccurrencesOfString:@"."
withString:@"."];
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setGroupingSeparator:@","];
[formatter setDecimalSeparator:@"."];
[formatter setMaximumFractionDigits:10];
NSDecimalNumber *number = [NSDecimalNumber decimalNumberWithString:currentText];
NSString *finalText = [formatter stringFromNumber:number];
NSString *lastChar = [currentText substringFromIndex:[currentText length] - 1];
if ([lastChar isEqualToString:@"."])
{
finalText = [finalText stringByAppendingString:@"."];
}
[display_ setText: finalText];
[formatter release];
Никакое суммирование (которое я пробовал) с параметрами форматера не позволит ввести нули после десятичной точки.