Domanda

che sembra un bug nel API:

Quando il mio ingresso CGFloat è 0.0, ottengo questo:

Input = 0.000000, Output = +0

Quando il mio ingresso CGFloat è 1,0, ottengo questo:

Input = 1.000000, Output = +2

Ovviamente questo non è quello che voglio; -)

Ora, ecco come lo creo quell'oggetto 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];

e questo è come ho lasciato il mio formattare CGFloat di 1.0f:

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

Può essere il RoundingMode il problema qui? Quale dovrei specificare? O c'è un altro motivo di questo strano comportamento?

È stato utile?

Soluzione

L'aggiunta di questo sembra fare il trucco per me, anche se io non sono sicuro perché lo fa:

[formatter setRoundingIncrement: [NSNumber numberWithFloat: 1]];
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top