2012-07-19 14 views
5

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?

Respuesta

11

Ryan no está del todo equivocado. Utilice el método localizedStringWithFormat:

usando Objective-C

NSNumber *yourNumber = [nf numberFromString:yourString]; 
//to create the formatted NSNumber object 

NSString *yourString = [NSString localizedStringWithFormat:@"%.2F", yourNumber]; 
//to create the localized output 

utilizando SWIFT 3

let yourString: String 
yourString = String.localizedStringWithFormat("%.2F", yourDoubleNumber) //no need for NSNumber Object 

Un poco tarde, pero todavía podría ayudar. ¡Buena suerte!

+0

Sí, esto hace exactamente lo que necesita hacer. ¡Gracias, incluso se agradece una respuesta tardía! – user8472

+0

¡De nada! Tuve algunas dificultades con la localización también. ¡Buena suerte! – JFS

+0

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

Cuestiones relacionadas