У меня проблемы с
+ (NSDecimalNumber *)decimalNumberWithString:(NSString *)numericString locale:(NSDictionary *)locale
Так как я хочу, чтобы программные значения очень высокой точности были получены изначально, чтобы не было ошибок с плавающей запятой, Apple предоставляет мне единственный вариант, чтобы полагаться на шаткий язык.
Итак, в документации написано довольно зашифровано:
Параметры: ...
место действия
Словарь
который определяет локаль (в частности,
NSDecimalSeparator) использовать для
интерпретировать число в numericString.
Обсуждение
Параметр locale определяет, является ли NSDecimalSeparator
период (как используется, например, в
США) или запятая (как есть
используется, например, во Франции).
хорошо, после поиска NSDecimalSeparator в документах ничего не найдено. Поиск в сети, обнаружил, что эта вещь "устарела". Так что в настоящее время я делаю что-то опасное, как это:
NSLocale *usLoc = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
NSDecimalNumber *num = [NSDecimalNumber decimalNumberWithString:str locale:usLoc];
Так что мне интересно: если им действительно нужен этот странный языковой стандарт для чего-то такого важного (я добавляю строки программно, без ввода данных пользователем), не могу ли я как-то создать свой собственный языковой стандарт? Этот параметр хочет NSDictionary, поэтому идея:
Могу ли я создать NSMutableDictionary из этого словаря локали, который поставляется для -initWithLocaleIdentifier: @ "en_US", а затем просто отредактировать этот%? & §! NSDecimalSeparator поле?
И еще одна вещь, которая вызывает у меня головную боль: почему параметр запрашивает NSDictionary, где я должен передать объект NSLocale? Или мой код неверен? (не проверено, так как мое приложение в настоящее время полностью испорчено ;-))