Пользователи NSNumberFormatter для iOS 13 игнорируют setRoundingIncrement - PullRequest
1 голос
/ 21 сентября 2019
NSLocale *locale = [NSLocale currentLocale];
NSNumberFormatter *currencyStyle = [[NSNumberFormatter alloc] init];
[currencyStyle setLocale:locale];
[currencyStyle setNumberStyle:NSNumberFormatterCurrencyStyle];
[currencyStyle setFormatterBehavior:NSNumberFormatterBehavior10_4];
[currencyStyle setCurrencySymbol:[countriesCurrency objectForKey:currency]];
[currencyStyle setRoundingIncrement:[NSNumber numberWithFloat:0.01]];

С 2012 года код, как показано ниже, возвратил «0,70 €», и это было здорово, поскольку это именно то, что ожидается.

po [currencyStyle stringFromNumber:[NSNumber numberWithFloat:0.70]]

НО начиная с iOS 13 (сборка приложения с xCode 10.3, только пользователи с iOS 13 на своих iPhone установили приложение из AppStore. То же самое для сборки бросить xCode 11 на iOS 13.0 и 13.1 beta) точно такой же кодвозвращает "0,69999998435378074 €"

После быстрых полуночных исследований выяснилось, что если добавить

currencyStyle.usesSignificantDigits = YES;

, то результат будет "0,7 €" - намного лучше, но все же не совсем то, что ожидалось ("0.70 € ").

Есть идеи, как сделать setRoundingIncrement снова великолепным?

[ОБНОВЛЕНИЕ]: переписать тот же код для быстрого решения проблемы, но это звучит как временное решение в случае, если всеПриложение отдыха находится в Obj-C.

...