NSNumberFormatter.numberFromString返回意外值

时间:2016-12-23 05:30:56

标签: ios foundation nsnumberformatter

使用NSNumberFormatter时遇到了问题。在两种系统语言设置中,我得到两个不同的结果。

现在说系统语言是越南语。当值为“1.111”(包含currencyGroupingSeparator)时,numberFromString返回nil。但是当值为“111”且不包含currencyGroupingSeparator时,numberFromString会按预期返回NSNumber(1.111)。

奇怪的是当系统语言是英语时,“1.111”和“111”都可以通过numberFromString转换为预期的`NSNumber(1.111和111)。

我是否误用了NSNumberFormatter?

let formatter = NSNumberFormatter()
formatter.numberStyle = .CurrencyStyle
formatter.currencySymbol = ""
formatter.maximumFractionDigits = 0
formatter.minimumFractionDigits = 0
formatter.currencyGroupingSeparator = "."
formatter.currencyDecimalSeparator = ","
let testNumber = formatter.numberFromString("1.111")

// nil when system language is Vietnamese,
// but 1.111 when system language is English 
print("\(testNumber)") 

1 个答案:

答案 0 :(得分:0)

您可以强制格式化的语言环境,然后对所有情况都是一样的:

{{1}}