2012-07-19 8 views
5

Ich möchte eine formatierte Ausgabe einer Fließkommazahl mit korrekter Lokalisierung auf Cocoa-Touch erstellen. Die Ausgabe sollte der von printf("%<a>.<b>f", n) entsprechen, wobei <a> die Gesamtzahl der Ziffern und <f> die maximale Anzahl der Nachkommastellen ist.Wie formatiert und druckt Float-Nummern auf iOS?

Aufbau NSNumberFormatter mit <a>=6 und <f>=2: (Platform ist iOS 5.1 SDK, Xcode 4.3.3 und das iPhone Simulator 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]]); 

Erwartete Ausgabe (mit deutschem locale): Test: 2,64

Beobachtete Ausgabe (mit deutscher Sprachumgebung): Test: 2,64324

Andere Beobachtungen: Ich habe versucht, verschiedene Werte für die Bruchzahlen zu verwenden, z. [nf setMaximumFractionDigits:4] oder [nf setMaximumFractionDigits:0]. Das Ergebnis ist unverändert. Es scheint, dass die Bruchzahlen ignoriert werden. Wenn Sie das Gebietsschema in US ändern, wird nur die , in eine . geändert, nicht die Anzahl der Nachkommastellen.

Frage: Wie kann ich die printf-Format-Zeichenfolge richtig in eine NSNumberFormatter übersetzen?

Antwort

11

Ryan ist nicht völlig falsch. Verwenden Sie die localizedStringWithFormat Methode:

mit Objective-C

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

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

mit SWIFT 3

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

Ein wenig spät, aber es könnte noch helfen. Viel Glück!

+0

Ja, das macht genau das, was es tun muss! Danke, auch eine späte Antwort wird geschätzt! – user8472

+0

Gern geschehen! Ich hatte auch Schwierigkeiten mit der Lokalisierung. Viel Glück! – JFS

+0

Magie. Und da war ich und schrieb NSNumber Kategorien ... als alles, was ich brauchte, schon da war, ordentlich und einfach. Das ist die Art von kleinen Dingen, die uns so sehr nach Apple lieben. – KPM