Pergunta

que se parece com um bug na API:

Quando a minha entrada CGFloat é de 0,0, fico com esta:

Input = 0.000000, Output = +0

Quando a minha entrada CGFloat é de 1,0, fico com esta:

Input = 1.000000, Output = +2

Obviamente isso não é o que eu quero; -)

Agora é aqui como eu crio que NSNumberFormatter objeto:

    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];

e é assim que eu deixá-lo formatar meu CGFloat de 1.0f:

CGFloat myValue = 1.0f;     
NSNumber *number = [NSNumber numberWithFloat:myValue];
NSLog(@"Input = %f, Output = %@", myValue, [self.inputValueFormatter stringFromNumber:number]);

Pode ser o RoundingMode o problema aqui? Qual devo especificar? Ou existe outra causa para esse comportamento estranho?

Foi útil?

Solução

Adicionando este parece fazer o truque para mim, embora eu não sei por que ele faz:

[formatter setRoundingIncrement: [NSNumber numberWithFloat: 1]];
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top