我的目标很简单,我有一个文本框存储本地化的货币值($ 1,000.00例如),我需要得到该值从文本框为float回到上进行一些测试文本字段。转换货币字符串到浮在Objective-C
的代码是非常简单的,首先我格式化的NSNumber到localizedString像这样:
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 –