Question

Cela ressemble à un bogue dans l'API:

Quand mon entrée CGFloat est 0.0, je reçois ceci:

Input = 0.000000, Output = +0

Quand mon entrée CGFloat est 1.0, je reçois ceci:

Input = 1.000000, Output = +2

De toute évidence, ce n'est pas ce que je veux; -)

Maintenant, voici comment je crée cet objet 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];

et voilà comment je laisse formater mon CGFloat de 1.0f:

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

Peut-être le roundingMode le problème ici? Que dois-je préciser? Ou est-il une autre cause de ce comportement étrange?

Était-ce utile?

La solution

Ajout cela semble faire l'affaire pour moi, même si je ne sais pas pourquoi il le fait:

[formatter setRoundingIncrement: [NSNumber numberWithFloat: 1]];
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top