Почему мой объект NSNumberFormatter печатает "2" для ввода 1.0? - PullRequest
1 голос
/ 24 августа 2009

Это похоже на ошибку в 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]);

Может быть, округление сработало здесь? Что я должен указать? Или есть другая причина для этого странного поведения?

1 Ответ

0 голосов
/ 24 августа 2009

Добавление этого, кажется, помогает мне, хотя я не уверен, почему это так:

[formatter setRoundingIncrement: [NSNumber numberWithFloat: 1]];
...