Нет, у него нет возможности настроить его.
В режиме «10.4» NSNumberFormatter в основном просто обертывает CFNumberFormatter (хотя это не является прямой оплатой по мостам). Вы можете посмотреть список ключей свойств Formatterter, и довольно ясно, что ничего не будет делать то, что вы хотите. (Возможно, это возможно в режиме «10,0», для выяснения этого потребуется немного проб и ошибок. Но я сомневаюсь, что вы хотите это использовать.)
Итак, предварительное округление (как предполагает Джастин Бу), вероятно, ваш лучший вариант.
Вы могли бы, конечно, выполнить пост-процесс. То, что вы хотите сделать, вероятно, зависит от того, хотите ли вы также отображать -0.00 как 0,00, что вы хотите сделать для локализации, которые не используют «-0» и т. Д. Самый простой случай будет таким же простым, как это:
@interface NSNumberFormatter (NegativeZero)
- (NSString *)stringFromNumberNoNegativeZero:(NSNumber *)number;
@end
@implementation NSNumberFormatter (NegativeZero)
- (NSString *)stringFromNumberNoNegativeZero:(NSNumber *)number {
NSString *s = [self stringFromNumber:number];
if ([s isEqualToString:@"-0"]) return @"0";
return s;
}
@end
Но если вам нужно что-то более сложное, это будет усложняться.
ОК. Я пошел с перехватом значения в проблемном диапазоне и округлением его сам: 'float f = [number floatValue]; if (f < 0 && f > -0.5) number = [NSNumber numberWithLong: lround (f)]; ' – Palimondo
Обратите внимание, что строковые манипуляции, как показано здесь, неправильно обрабатывают все языковые стандарты. Существуют и другие символы, используемые для '0', и потенциально также разные символы для отрицательных значений. Вам лучше округлить число в числовой форме и позволить цифрам форматировать делать свою работу. – Palimondo
@Palimondo: ответ уже говорит о том, что «предварительное округление ... вероятно, является вашим лучшим вариантом», и даже если вы решите выполнить постпроцесс, «именно то, что вы хотите сделать, вероятно, зависит от того, что вы хотите сделать для локализации, которые не используют «-0», поэтому комментарий не добавляет никакой новой информации. – abarnert