NSScanner извлечет числовое значение из строки таким же образом, как если бы вы инициализировали NSDecimalNumber с этой строкой. Вы можете следовать правилам NSDecimalNumber относительно того, что он может анализировать.
Согласно разделу сканеров «Руководства по программированию строки для какао» от Apple, локализация будет основываться на локали пользователя. Вы можете изменить это, используя setLocale: если вы хотите указать десятичный разделитель вручную.
Мы использовали NSScanner для инициализации NSDecimal из строки, потому что это было значительно быстрее, чем использование NSDecimalNumber с кодом, подобным следующему:
NSDecimalNumber *newNumber = [[NSDecimalNumber alloc] initWithString:@"1.0" locale:[NSLocale currentLocale]];
newDecimal = [newNumber decimalValue];
[newNumber release];
NSScanner выполнял около 582000 преобразований в секунду, тогда как NSDecimalNumber выполнял только 307000 на моем Mac.