ios – 在Objective-C中将货币字符串转换为浮点数

ios – 在Objective-C中将货币字符串转换为浮点数,第1张

概述我的目标很简单,我有一个存储本地化货币值的文本字段(例如$1,000.00),我需要从文本字段中取回该值作为浮点数来对文本字段执行某些测试. 代码非常简单,首先我将NSNumber格式化为localizedString,如下所示: NSNumberFormatter* formatter = [[NSNumberFormatter alloc] init];formatter.locale = 我的目标很简单,我有一个存储本地化货币值的文本字段(例如$1,000.00),我需要从文本字段中取回该值作为浮点数来对文本字段执行某些测试.

代码非常简单,首先我将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中将货币字符串转换为浮点数所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1113610.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存