Il mio obiettivo è semplice, ho un campo di testo che memorizza un valore di valuta localizzato ($ 1.000,00 per esempio) e ho bisogno di recuperare quel valore dal campo di testo come un float per eseguire qualche test su il campo di testo.Converti stringa di valuta in float in Objective-C
il codice è molto semplice, per prima cosa formattare il NSNumber ad un LocalizedString come così:
NSNumberFormatter* formatter = [[NSNumberFormatter alloc] init];
formatter.locale = [NSLocale currentLocale];
formatter.numberStyle = NSNumberFormatterCurrencyStyle;
textfield.text = [formatter stringFromNumber:number];
Tutto funziona bene, ma poi faccio il contrario per ottenere il doubleValue da questa stringa localizzata:
NSNumberFormatter* formatter = [[NSNumberFormatter alloc] init];
formatter.locale = [NSLocale currentLocale];
formatter.numberStyle = NSNumberFormatterCurrencyStyle; //also tested with NSNumberFormatterDecimalStyle
double d = [formatter numberFromString:textfield.text].doubleValue;
il problema è che il formattatore restituisce solo il valore intero della mia stringa e non i decimali, peggio, se si tratta di un LocalizedString canadese (20 000,00 $) restituisce solo 20.
Ho cercato per un po 'di tempo e non riesco a trovare nulla su questo comportamento. La soluzione è, naturalmente, la memorizzazione del NSNumber prima di formarlo nel campo di testo e quindi testare questo nsumero, ma in realtà non lo trovo carino.
Si può vedere questo [Ottenere un NSDecimalNumber da una stringa specifica locale] [1] su [1]: http://stackoverflow.com/questions/317311/obtaining-an-nsdecimalnumber-from-a-locale-specific-string –