Pregunta

Eso se parece a un error en la API:

Cuando mi entrada CGFloat es de 0.0, me sale esto:

Input = 0.000000, Output = +0

Cuando mi entrada CGFloat es 1.0, me sale esto:

Input = 1.000000, Output = +2

Obviamente eso no es lo que quiero; -)

Ahora aquí es cómo creo 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];

y es así como dejo que formatear mi CGFloat de 1.0f:

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

Puede ser el roundingMode el problema aquí? ¿Qué debería especificar? ¿O hay otra causa de este comportamiento extraño?

¿Fue útil?

Solución

La adición de este parece hacer el truco para mí, aunque no estoy seguro de por qué lo hace:

[formatter setRoundingIncrement: [NSNumber numberWithFloat: 1]];
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top