Me gustaría crear una salida formateada de un número de coma flotante con la localización correcta en Cocoa-Touch. La salida debe ser equivalente a la de printf("%<a>.<b>f", n)
, donde <a>
es el número total de dígitos y <f>
es la cantidad máxima de dígitos fraccionarios.¿Cómo formatear e imprimir números flotantes en iOS?
Configuración de NSNumberFormatter
con <a>=6
y <f>=2
: (Plataforma es iOS 5.1 SDK, Xcode 4.3.3 y el simulador de iPhone 5,1)
NSNumberFormatter *nf = [[NSNumberFormatter alloc] init];
[nf setNumberStyle:NSNumberFormatterDecimalStyle];
[nf setPaddingCharacter:@" "];
[nf setUsesGroupingSeparator:NO];
[nf setLocale:[NSLocale autoupdatingCurrentLocale]];
[nf setUsesSignificantDigits:YES];
[nf setMaximumSignificantDigits:6];
[nf setMaximumFractionDigits:2];
[nf setRoundingMode:NSNumberFormatterRoundFloor];
NSLog(@"Test: %@", [nf stringFromNumber:[NSNumber numberWithDouble:2.64324897]]);
Resultados previstos (con configuración regional alemana): Test: 2,64
Salida observada (con configuración regional alemana): Test: 2,64324
Otras observaciones: He intentado utilizar diferentes valores para los dígitos de fracción, p. Ej. [nf setMaximumFractionDigits:4]
o [nf setMaximumFractionDigits:0]
. El resultado no cambia, parece que los dígitos de la fracción se ignoran. Cambiar la configuración regional a EE. UU. Solo cambia el ,
a .
, no el número de dígitos de fracción.
Pregunta: ¿Cómo puedo traducir la cadena printf
-format correctamente a un NSNumberFormatter
?
Sí, esto hace exactamente lo que necesita hacer. ¡Gracias, incluso se agradece una respuesta tardía! – user8472
¡De nada! Tuve algunas dificultades con la localización también. ¡Buena suerte! – JFS
Magia. Y allí estaba yo, escribiendo NSNumber categorías ... cuando todo lo que necesitaba ya estaba allí, ordenado y simple. Este es el tipo de pequeñas cosas que nos hace tan aficionado a Apple. – KPM