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?
Ja, das macht genau das, was es tun muss! Danke, auch eine späte Antwort wird geschätzt! – user8472
Gern geschehen! Ich hatte auch Schwierigkeiten mit der Lokalisierung. Viel Glück! – JFS
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