У меня есть строка s, которая зависит от локали (например, 0,01 или 0,01). Я хочу преобразовать эту строку в NSDecimalNumber. Из примеров, которые я видел до сих пор в interwebs, это достигается с помощью NSNumberFormatter a la:
NSString *s = @"0.07";
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setFormatterBehavior:NSNumberFormatterBehavior10_4];
[formatter setGeneratesDecimalNumbers:YES];
NSDecimalNumber *decimalNumber = [formatter numberFromString:s];
NSLog([decimalNumber stringValue]); // prints 0.07000000000000001
Я использую режим 10.4 (в дополнение к тому, чтобы быть рекомендованным в документации, это также единственный доступный на iPhone режим), но указывающий на форматтер, который я хочу создать десятичные числа. Обратите внимание, что я упростил свой пример (я действительно имею дело с валютными строками). Тем не менее, я, очевидно, что-то не так, чтобы вернуть значение, которое иллюстрирует неточность чисел с плавающей запятой.
Каков правильный метод преобразования определенной строки языка в NSDecimalNumber?
Изменить: Обратите внимание, что мой пример для простоты. Вопрос, который я задаю, также должен касаться того, когда вам нужно взять определенную локальную валютную строку и преобразовать ее в NSDecimalNumber. Кроме того, это можно расширить до определенной процентной строки в локали и преобразовать ее в NSDecimalNumber.