我正在尝试将数字格式化为货币。
let formatter = NSNumberFormatter()
formatter.locale = NSLocale(localeIdentifier: "en_GB")
formatter.numberStyle = NSNumberFormatterStyle.CurrencyStyle
let limit = formatter.numberFromString("12.99") as? NSDecimalNumber
但是,常数限制返回为零。奇怪的是,这段代码直到最近才起作用,但不确定可能发生的变化。示例看起来没问题,或者我错过了什么?
修改
为了给出上下文,我试图将字符串数字(从输入元素)解析为十进制数字以存储为货币值。我的错误显示为设置数字样式,我使用.CurrencyStyle
,但应使用.DecimalStyle
。
答案 0 :(得分:1)
作为我试过的第一次测试
println(formatter.stringFromNumber(12.99)) // prints "£12.99"
然后我试了
let limit = formatter.numberFromString("£12.99") as? NSDecimalNumber // gives nil
但是
let limit = formatter.numberFromString("£12.99") // gives 12.99
尽管
let limit = formatter.numberFromString("12.99") // gives nil
所以货币符号是强制性的