NSNumberFormatter对减号感到困惑?

时间:2016-02-28 14:36:35

标签: nsnumberformatter

检查出来:

(lldb) po NSNumberFormatter().numberFromString("+10.6")
nil
(lldb) po NSNumberFormatter().numberFromString("10.6")
▿ Optional(10.6)
(lldb) po NSNumberFormatter().numberFromString("-10.6")
▿ Optional(-10.6)

显然,在数字上添加减号是完全有效的,但加号不是。是这种预期的行为,所以,任何人都知道为什么?

2 个答案:

答案 0 :(得分:1)

我不能说为什么NSNumberFormatter不能容忍“+”符号,但Swift的Float类型似乎更聪明:

{{1}}

它不会返回NSNumber,但我猜你总是可以输入/转换它。

答案 1 :(得分:0)

The problem is that no locale uses a positive prefix by default in their number formatters

您需要明确告诉您的NSNumberFormatter实例该做什么。

这适用于Xcode playground:

import Foundation

// this outputs "nil"
let bustedNnumber = NSNumberFormatter().numberFromString("+10.6")

// this outputs "-10.6"
let minusnumber = NSNumberFormatter().numberFromString("-10.6")

let nf = NSNumberFormatter()
nf.numberStyle = .DecimalStyle
nf.positivePrefix = "+"

// this outputs "10.6"
let positiveNumber = nf.numberFromString("+10.6")