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.