У меня есть строка s, специфичная для локали (например, 0,01 или 0,01). Я хочу преобразовать эту строку в NSDecimalNumber. Из примеров, которые я до сих пор видел на межсетях , это достигается с помощью NSNumberFormatter а-ля:
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.