我的目标很简单,我有一个存储本地化货币值的文本字段(例如 $1,000.00),我需要从文本字段中取回该值作为浮点数,以便对文本字段执行一些测试。
代码非常简单,首先我将 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;
问题是格式化程序只返回我的字符串的整数值而不是小数,更糟糕的是,如果它是加拿大本地化字符串(20 000,00 $),它只返回 20。
我已经搜索了一段时间,但找不到任何关于这种行为的信息。解决方法当然是在将 NSNumber 格式化为文本字段之前存储它,然后测试这个 nsnumber,但我真的不觉得它漂亮。