2012-07-19 13 views
5

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?

risposta

11

Ryan non ha completamente torto. Utilizzare il metodo 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 

utilizzando SWIFT 3

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

Un po 'in ritardo ma ancora potrebbe aiutare. In bocca al lupo!

+0

Sì, questo fa esattamente quello che deve fare! Grazie, anche una risposta tardiva è apprezzata! – user8472

+0

Siete i benvenuti! Ho avuto anche qualche difficoltà con la localizzazione. In bocca al lupo! – JFS

+0

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

Problemi correlati