Vorrei creare un output formattato di un numero in virgola mobile con localizzazione corretta su Cocoa-Touch. L'output dovrebbe essere equivalente a quello di printf("%<a>.<b>f", n)
, dove <a>
è il numero totale di cifre e <f>
è il numero massimo di cifre frazionarie.Come formattare e stampare i numeri float su iOS?
Setup di NSNumberFormatter
con <a>=6
e <f>=2
: (Platform è iOS 5.1 SDK, Xcode 4.3.3 e il simulatore di 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]]);
uscita prevista (con locale tedesco): Test: 2,64
Uscita osservata (con impostazioni locali tedesche): Test: 2,64324
Altre osservazioni: Ho provato a utilizzare valori diversi per le cifre della frazione, ad es. [nf setMaximumFractionDigits:4]
o [nf setMaximumFractionDigits:0]
. Il risultato è invariato, sembra che le cifre della frazione siano ignorate. La modifica delle impostazioni internazionali negli Stati Uniti modifica solo lo ,
in un .
, non il numero di cifre di frazione.
Domanda: Come posso tradurre correttamente la stringa printf
in un NSNumberFormatter
?
Sì, questo fa esattamente quello che deve fare! Grazie, anche una risposta tardiva è apprezzata! – user8472
Siete i benvenuti! Ho avuto anche qualche difficoltà con la localizzazione. In bocca al lupo! – JFS
Magia. E io ero lì, scrivendo NSNumber categorie ... quando tutto ciò di cui avevo bisogno era già lì, pulito e semplice. Questo è il tipo di piccole cose che ci rende così affezionati a Apple. – KPM