私の目標は簡単です。ローカライズされた通貨値(例えば$ 1,000.00)を格納するテキストフィールドがあり、その値を浮動小数点として返す必要がありますテキストフィールドObjective-Cで通貨文字列をfloatに変換する
コードでは、まず、私はそうとlocalizedStringへのNSNumberをフォーマットし、本当に簡単です:
NSNumberFormatter* formatter = [[NSNumberFormatter alloc] init];
formatter.locale = [NSLocale currentLocale];
formatter.numberStyle = NSNumberFormatterCurrencyStyle;
textfield.text = [formatter stringFromNumber:number];
すべてが正常に動作しますが、その後、私は、このローカライズされた文字列からのdoubleValueを取得するために、反対の操作を行います。
NSNumberFormatter* formatter = [[NSNumberFormatter alloc] init];
formatter.locale = [NSLocale currentLocale];
formatter.numberStyle = NSNumberFormatterCurrencyStyle; //also tested with NSNumberFormatterDecimalStyle
double d = [formatter numberFromString:textfield.text].doubleValue;
問題は、それがカナダのlocalizedstring(20 000,00 $)であれば、それは唯一の20
を返し、フォーマッタは私の文字列の整数値ではなく小数を返すこと悪いです私はしばらく時間を探していて、この動作について何も見つかりませんでした。回避策はもちろん、NSNumberをテキストフィールドに書式設定する前に格納してから、このnsnumberをテストすることですが、実際にはそれほど見つからないのです。
あなたはこの[ロケール固有の文字列からNSDecimalNumberを取得] [1]について見ることができ [1]:http://stackoverflow.com/questions/317311/obtaining-an-nsdecimalnumber-from-a-locale-specific-string –