代码非常简单,首先我将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 NSNumberFormatterDecimalStyledouble d = [formatter numberFromString:textfIEld.text].doubleValue;
问题是格式化程序只返回我的字符串的整数值而不是小数,更糟糕的是,如果它是加拿大本地化字符串(20 000,00 $),它只返回20.
我一直在寻找一段时间,但却找不到任何关于这种行为的信息.解决方法当然是在将NSNumber格式化之前存储到文本字段然后测试这个nsnumber,但我真的不觉得它很漂亮.
解决方法 在Swift中,您可以通过类似地将语言环境设置为货币格式,然后获取双精度来实现此目的:var locale = NSLocale.currentLocale() var formatter = NSNumberFormatter() formatter.locale = NSLocale(localeIDentifIEr: "en_US") formatter.numberStyle = NSNumberFormatterStyle.CurrencyStyle var moneyDouble = formatter.numberFromString(textFIEld.text)?.doubleValue总结
以上是内存溢出为你收集整理的ios – 在Objective-C中将货币字符串转换为浮点数全部内容,希望文章能够帮你解决ios – 在Objective-C中将货币字符串转换为浮点数所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)