Я пытаюсь преобразовать строки в числа, используя NSNumberFormatter
.В моем приложении входные строки с более чем двумя цифрами после десятичной точки недопустимы, т. Е. @"3.1"
и @"3.14"
являются допустимыми вводами, но @"3.141"
не является.
Документация для NSNumberFormatter
говорит, что setMaximumFractionDigits:
"[s] задает максимальное количество цифр после десятичного разделителя, разрешенного как ввод получателем."
Итак, я был удивлен, когда этот код:
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
numberFormatter.maximumFractionDigits = 2;
NSNumber *number = [numberFormatter numberFromString:@"3.141"];
NSLog(@"%@", number);
принял @"3.141"
и дал мне следующий вывод:
3.141
Я ожидал, что преобразование @"3.141"
завершится неудачно (и вернет nil
), потому что в нем больше максимального числа цифрразрешено после десятичного разделителя.
Очевидно, я не понимаю здесь чего-то базового.NSNumberFormatter
не использует maximumFractionDigits
как часть проверки ввода строки?