Изменить поведение локали по умолчанию для форматирования валюты - PullRequest
2 голосов
/ 11 июня 2011

У меня странная проблема. Мое приложение использует двойное преобразование:

строка валюты -> число -> строка валюты

По сути, единичные преобразования осуществляются через встроенные функции локализации iOS. Недавно я обнаружил, что приложение не работает должным образом, когда пользователь использует CHF в качестве валюты. Очевидно, по умолчанию для этой локали является округление всех значений валюты до ближайших 5 центов. (например, 1,28 швейцарских франков станет 1,30 швейцарских франков, а 1,21 швейцарских франков станет 1,20 швейцарских франков).

По ряду причин мне легче решить соглашение о форматировании, чем решить ошибку для этой единственной локали.

Знаете ли вы способ заставить преобразование использовать более подробный подход округления (например, 0,01 вместо 0,05) для каждой локали?

Спасибо!

1 Ответ

2 голосов
/ 12 июня 2011

Я нашел интересное решение:

currencyFormatter  = [[NSNumberFormatter alloc] init];
[currencyFormatter setGeneratesDecimalNumbers:YES];
[currencyFormatter setFormatterBehavior:NSNumberFormatterBehavior10_4];
[currencyFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
// This will force the rounding behavior:
[currencyFormatter setRoundingIncrement:[NSNumber numberWithFloat:0.01]];
...