Perché il mio oggetto di stampa “2” per l'ingresso NSNumberFormatter 1.0?
-
19-09-2019 - |
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?
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