Почему мой объект NSNumberFormatter печатает «2» для ввода 1.0?
-
19-09-2019 - |
Вопрос
Это похоже на ошибку в API:
Когда мой ввод CGFloat равен 0,0, я получаю следующее:
Input = 0.000000, Output = +0
Когда мой ввод CGFloat равен 1.0, я получаю следующее:
Input = 1.000000, Output = +2
Очевидно, это не то, чего я хочу ;-)
Вот как я создаю этот объект NSNumberFormatter:
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setAlwaysShowsDecimalSeparator:NO];
[formatter setAllowsFloats:YES];
[formatter setFormatterBehavior:NSNumberFormatterBehavior10_4];
[formatter setMinimumFractionDigits:0];
[formatter setPlusSign:@"+"];
[formatter setMinusSign:@"-"];
[formatter setPositivePrefix:@"+"];
[formatter setNegativePrefix:@"-"];
[formatter setRoundingMode:NSNumberFormatterRoundUp];
и вот как я позволил ему отформатировать мой CGFloat 1.0f:
CGFloat myValue = 1.0f;
NSNumber *number = [NSNumber numberWithFloat:myValue];
NSLog(@"Input = %f, Output = %@", myValue, [self.inputValueFormatter stringFromNumber:number]);
Может быть, проблема здесь в режиме округления?Что мне следует указать?Или есть другая причина такого странного поведения?
Решение
Добавление этого, кажется, помогло мне, хотя я не уверен, почему это так:
[formatter setRoundingIncrement: [NSNumber numberWithFloat: 1]];
Не связан с StackOverflow